Hibernate:在 Weblogic 中配置数据源后出现错误 "org.hibernate.exception.GenericJDBCException: could not update"
Hibernate: Getting error after configuring Data Source in Weblogic "org.hibernate.exception.GenericJDBCException: could not update"
当我在没有任何数据源的情况下配置 Hibernate.cfg.xml
时,我的应用程序 运行 正确。
我正在 Weblogic 上部署我的应用程序。
但现在我已经使用数据源配置了它(在 .cfg 和 Weblogic 中)。
Aster 这突然间我开始在某些 table 上发生更新时出现异常。没有数据源它工作正常。
这是旧的配置:(工作正常)
<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
所有 Select
和 Insert
查询都工作正常,但是当 update
发生时,会抛出上述错误。
我的 Lib
文件夹包含 Hibernate Jar,JPA 2.1 jar。
是不是我的配置有问题?
我所有的映射和列等似乎都很好。
任何帮助将不胜感激。
您好,问题出在 Oracle 中对布尔值的支持是 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
布尔值;
当我在没有任何数据源的情况下配置 Hibernate.cfg.xml
时,我的应用程序 运行 正确。
我正在 Weblogic 上部署我的应用程序。
但现在我已经使用数据源配置了它(在 .cfg 和 Weblogic 中)。
Aster 这突然间我开始在某些 table 上发生更新时出现异常。没有数据源它工作正常。
这是旧的配置:(工作正常)
<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
所有 Select
和 Insert
查询都工作正常,但是当 update
发生时,会抛出上述错误。
我的 Lib
文件夹包含 Hibernate Jar,JPA 2.1 jar。
是不是我的配置有问题? 我所有的映射和列等似乎都很好。 任何帮助将不胜感激。
您好,问题出在 Oracle 中对布尔值的支持是 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 布尔值;