java - Hibernate ORA-00932: 不一致的数据类型: 预期 NUMBER 得到 BINARY
问题描述
我正在尝试使用 Hibernate 将 Oracle 数据库与 Java 映射,但我遇到了一个问题。这是代码:
Java应用程序:
package guival.tp3.bdd;
import java.time.LocalDate;
import org.hibernate.*;
public class Scenariste extends Personne {
private int idScenariste;
public int getIdScenariste() {
return idScenariste;
}
public void setIdScenariste(int idScenariste) {
this.idScenariste = idScenariste;
}
}
public class Test {
public static void main(String[] args) {
Session uneSession = HibernateUtil.getSessionFactory().openSession();
Transaction uneTransaction = uneSession.beginTransaction();
Scenariste scenar = new Scenariste();
scenar.setDateNaissance(LocalDate.now());
scenar.setNom("fefef");
scenar.setPrenom("fefzefzfz");
uneSession.save(scenar);
uneTransaction.commit();
uneSession.close();
HibernateUtil.shutdown();
}
}
休眠配置文件:
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
<property name="hibernate.connection.url">jdbc:oracle:thin:@localhost:1521/system</property>
<property name="hibernate.connection.username">---</property>
<property name="hibernate.connection.password">---</property>
<property name="dialect">org.hibernate.dialect.OracleDialect</property>
<property name="hibernate.c3p0.min_size">5</property>
<property name="hibernate.c3p0.max_size">20</property>
<property name="hibernate.c3p0.timeout">300</property>
<property name="hibernate.c3p0.max_statements">50</property>
<property name="hibernate.c3p0.idle_test_period">3000</property>
<!-- SQL to stdout logging -->
<property name="show_sql">true</property>
<property name="format_sql">true</property>
<property name="use_sql_comments">true</property>
<mapping resource="guival/tp3/bdd/Scenariste.hbm.xml"/>
</session-factory>
</hibernate-configuration>
Hibernate Scenariste 表映射文件:
<hibernate-mapping>
<class name="guival.tp3.bdd.Scenariste" table="SCENARISTE">
<id name="idScenariste" column="ID_SCENARISTE" type="integer" unsaved-value="0">
<generator class="sequence">
<param name="sequence">SEQ_SCENARISTE</param>
</generator>
</id>
<property name="nom">
<column name="NOM" sql-type="VARCHAR2(50)"/>
</property>
<property name="prenom">
<column name="PRENOM" sql-type="VARCHAR2(50)"/>
</property>
<property name="dateNaissance">
<column name="DATE_NAISSANCE" sql-type="DATE"/>
</property>
</class>
</hibernate-mapping>
SCENARISTE 表看起来像这样:
我还在数据库中创建了一个触发器来增加 ID_SCENARISTE 列。
当我运行此代码时,出现此错误:ORA-00932: inconsistent datatypes: expected NUMBER got BINARY
以下是发生错误时 Hibernate 日志的最后几行:
Hibernate:
select
SEQ_SCENARISTE.nextval
from
dual
Hibernate:
/* insert guival.tp3.bdd.Scenariste
*/ insert
into
SCENARISTE
(NOM, PRENOM, DATE_NAISSANCE, ID_SCENARISTE)
values
(?, ?, ?, ?)
déc. 02, 2018 6:48:55 PM org.hibernate.util.JDBCExceptionReporter logExceptions
WARNING: SQL Error: 932, SQLState: 42000
déc. 02, 2018 6:48:55 PM org.hibernate.util.JDBCExceptionReporter logExceptions
SEVERE: ORA-00932: types de données incohérents ; attendu : NUMBER ; obtenu : BINARY
我正在使用 Hibernate 3.2.0.cr5 和 Java SE 8。
你有解决方案吗 ?
解决方案
尝试删除这样的数据类型
<id name="idScenariste" column="ID_SCENARISTE" unsaved-value="0">
<generator class="sequence">
<param name="sequence">SEQ_SCENARISTE</param>
</generator>
</id>
推荐阅读
- node.js - 路线未加载组件
- html - 我无法使用 html 和 css 在 Sencha Architect 中设置我的图标大小
- python - java weblogic.WLST script.sh给出名称错误:python
- c++ - 我无法使用 FTGL(未找到 ft2build.h)
- reactjs - 如何在 Firebase 中使用 SetState 或函数
- abstract-syntax-tree - 为什么自定义 ESLint 规则的选择器在 AST 上失败?
- php - PHP SOAP 类转换如何工作以及如何获得一致的列表结果?
- angularjs - AngularJS 中具有切换功能的垂直 SideMenu
- macos - 使用 awk 的多个分隔符并跟踪 $0 作为 var 对不同的字段进行排序
- c++ - 在 boost 进程异步子进程中 run() 之后是否需要 wait()?