java - Hibernate:在 Weblogic 中配置数据源后出现错误 "org.hibernate.exception.GenericJDBCException: could not update"

标签 java hibernate weblogic datasource hibernate-envers

当我在没有任何数据源的情况下配置 Hibernate.cfg.xml 时,我的应用程序运行正常。 我正在 Weblogic 上部署我的应用程序。 但现在我已经使用数据源(在 .cfg 和 Weblogic 中)配置了它。 当某些表发生更新时,我突然开始收到异常。没有数据源它工作正常。

这是配置:(工作正常)

<property name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
    <property name="hibernate.connection.url">jdbc:oracle:thin:@localhost:1521:XE</property>
    <property name="hibernate.connection.username">username</property>
    <property name="hibernate.connection.password">password</property>
    <property name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</property>
    <property name="org.hibernate.envers.track_entities_changed_in_revision">true</property>

以下是配置:(抛出异常)

<property name="connection.datasource">DataSourceTest</property>
    <property name="jndi.class">weblogic.jndi.WLInitialContextFactory</property>
    <property name="hibernate.dialect">org.hibernate.dialect.OracleDialect</property>
    <property name="org.hibernate.envers.track_entities_changed_in_revision">true</property>
    <property name="show_sql">true</property>
    <!-- <property name="hibernate.connection.autocommit">true</property>  -->
    <property name="hibernate.hbm2ddl.auto">update</property>

我也在Weblogic 12.1.3中做了类似的配置

但现在出现以下异常:

2016-07-20 14:45:02 INFO  AbstractBatchImpl:208 - HHH000010: On release of batch it still contained JDBC statements
2016-07-20 14:45:02 WARN  SqlExceptionHelper:144 - SQL Error: 17004, SQLState: 99999
2016-07-20 14:45:02 ERROR SqlExceptionHelper:146 - Invalid column type: 16
org.hibernate.exception.GenericJDBCException: could not update

所有SelectInsert查询都工作正常,但是当update发生时,会抛出上述错误。

我的 Lib 文件夹包含 Hibernate Jar、JPA 2.1 jar

我正在做的配置有问题吗? 我所有的映射和​​列等似乎都很好。 任何帮助将不胜感激。

最佳答案

您好,问题是由于 Oracle 中对 boolean 值的支持是 CHAR(1) 或 NUMBER(1)。这基本上意味着您将分别拥有“1”-“0”或“Y”-“N”组合。问题是转换问题,JDBC 驱动程序需要知道如何将 boolean 值转换为 CHAR(1)/NUMBER(1)

您可以尝试以下操作: 1. 将您的方言设置为 org.hibernate.dialect.Oracle10gDialect

或者,您可以尝试转换 Number(1)/Char(1):

@org.hibernate.annotations.Type(type="true_false") @NotNull boolean 值;

@org.hibernate.annotations.Type(type="yes_no") @NotNull boolean 值;

关于java - Hibernate:在 Weblogic 中配置数据源后出现错误 "org.hibernate.exception.GenericJDBCException: could not update",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38478502/

相关文章:

java - Weblogic 8.1.6常见的依赖有哪些

java - 如何编写哈希的删除方法来删除值?

spring - 当我尝试使用 JPA EntityGraph 使用 2 个集合加载实体时,MultipleBagFetchException

java - Spring Multi-Tenancy

java - 缺少工件 javax.transaction :jta:jar:1. 0.1B(问题不同,因为您可能会看到分辨率不同)

java - weblogic 11g 和 weblogic 12c 上的 jax-ws 日期时间解析差异

java - Joda 日期时间问题与年份

java - Hibernate with H2 不存储数据

java - 如何在点文件 node_id 中使用特殊字符?

java - 使用自定义 SSL 配置启动 WebLogic 服务器