【问题标题】:Hibernate + Spring JPA + Postgres ErrorHibernate + Spring JPA + Postgres 错误
【发布时间】:2016-09-17 10:08:55
【问题描述】:

我已经使用 Java Configuration 配置了 Spring Web 项目

带有 JNDI 的数据源(我在 context.xml 和 web.xml 中进行了配置) 配置了 Spring JPA 和 Hibernate。

和我的pom如下

<properties>
        <hibernate.version>4.2.15.Final</hibernate.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-entitymanager</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-jpa</artifactId>
        </dependency>
    <dependency>
        <groupId>jstl</groupId>
        <artifactId>jstl</artifactId>
        <version>1.2</version>
    </dependency>
  <!-- Logging -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <scope>runtime</scope>
        </dependency>

        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>jcl-over-slf4j</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <scope>runtime</scope>
        </dependency>

        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>javax.mail</groupId>
                    <artifactId>mail</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>javax.jms</groupId>
                    <artifactId>jms</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>com.sun.jdmk</groupId>
                    <artifactId>jmxtools</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>com.sun.jmx</groupId>
                    <artifactId>jmxri</artifactId>
                </exclusion>
            </exclusions>
            <scope>runtime</scope>
        </dependency>

        <!-- http://mvnrepository.com/artifact/org.postgresql/postgresql -->
<dependency>
    <groupId>org.postgresql</groupId>
    <artifactId>postgresql</artifactId>
    <version>9.4.1208.jre7</version>
</dependency>

    </dependencies>

   <dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>io.spring.platform</groupId>
            <artifactId>platform-bom</artifactId>
            <version>2.0.1.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
   </dependencyManagement>

当我在控制器中请求从数据库中获取数据时,出现以下错误

虽然是因为JDBC驱动的版本不匹配,请你解释一下为什么会出现这个错误,

如果需要任何其他详细信息,请告诉我。

SEVERE: Servlet.service() for servlet [dispatcher] in context with path [/user-hiberante-hana-spatial] threw exception [Request processing failed; nested exception is org.springframework.transaction.CannotCreateTransactionException: Could not open JPA EntityManager for transaction; nested exception is org.hibernate.exception.GenericJDBCException: Could not open connection] with root cause
org.postgresql.util.PSQLException: Method org.postgresql.jdbc4.Jdbc4Connection.isValid(int) is not yet implemented.
    at org.postgresql.Driver.notImplemented(Driver.java:753)
    at org.postgresql.jdbc4.AbstractJdbc4Connection.isValid(AbstractJdbc4Connection.java:102)
    at org.postgresql.jdbc4.Jdbc4Connection.isValid(Jdbc4Connection.java:21)
    at org.apache.tomcat.dbcp.dbcp2.DelegatingConnection.isValid(DelegatingConnection.java:913)
    at org.apache.tomcat.dbcp.dbcp2.PoolableConnection.validate(PoolableConnection.java:226)

【问题讨论】:

标签: spring hibernate postgresql jpa


【解决方案1】:

不,这是因为我使用了 Tomcat DBCP 不支持的 JNDI。我已经删除了 JNDI 数据源,现在直接连接它就可以了;)

【讨论】:

    【解决方案2】:

    试试这个解决方案:为参数“validationQuery”设置验证查询。

    例如:dataSource.setValidationQuery("SELECT 1");

    【讨论】:

      猜你喜欢
      • 2015-06-25
      • 1970-01-01
      • 1970-01-01
      • 2018-11-18
      • 2019-10-27
      • 2021-07-26
      • 1970-01-01
      • 2014-07-09
      • 2012-08-08
      相关资源
      最近更新 更多