Hibernate:在Weblogic" org.hibernate.exception.GenericJDBCException中配置数据源后出错:无法更新"

时间:2016-07-20 10:17:10

标签: java hibernate weblogic datasource hibernate-envers

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

这是配置:(正常工作)

<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

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

1 个答案:

答案 0 :(得分:1)

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

的转换问题

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

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

@ org.hibernate.annotations.Type(类型= “true_false”) @NotNull 布尔值;

@ org.hibernate.annotations.Type(类型= “YES_NO”) @NotNull 布尔值;