【发布时间】:2015-12-16 00:33:47
【问题描述】:
我通过休眠得到一个异常:
java.sql.BatchUpdateException: ORA-00932: inconsistent datatypes: expected NUMBER got BINARY
究竟是什么错误?
我在tx.commit() 行中有错误:
我只做:
Horario horario = new Horario();
horario.setId(new HorarioId("correo",10,2));
然后
tx = session.beginTransaction();
session.save(horario);
tx.commit();
而 Horario 类是:
public class Horario implements java.io.Serializable {
private HorarioId id;
private Datos datos;
private Serializable entrada;
private Serializable salida;
public Horario() {
}
HorarioId 是
public class HorarioId implements java.io.Serializable {
private String email;
private int semana;
private int dia;
public HorarioId() {
}
提前致谢
我以为 hbm 文件是下一个:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 14/12/2015 05:47:47 PM by Hibernate Tools 3.4.0.CR1 -->
<hibernate-mapping>
<class name="hbm.Horario" table="HORARIO">
<composite-id name="id" class="hbm.HorarioId">
<key-property name="email" type="string">
<column name="EMAIL" length="20" />
</key-property>
<key-property name="semana" type="int">
<column name="SEMANA" precision="5" scale="0" />
</key-property>
<key-property name="dia" type="int">
<column name="DIA" precision="5" scale="0" />
</key-property>
</composite-id>
<many-to-one name="datos" class="hbm.Datos" update="false" insert="false" fetch="select">
<column name="EMAIL" length="20" not-null="true" />
</many-to-one>
<property name="entrada" type="serializable">
<column name="ENTRADA" />
</property>
<property name="salida" type="serializable">
<column name="SALIDA" />
</property>
</class>
</hibernate-mapping>
表的关系是:
表 Horario 的列是:
【问题讨论】:
-
我上传了hbm文件。表“Horario”与表“Datos”有关系
-
在您提供的代码 sn-p 中,我可以看到您没有在
Horario的对象中设置Datos' 对象。所以我认为问题出在你的复合主键上。要确认这一点,请做一件事。从Horario类和映射文件中删除Datos条目。同时从Horario中删除所有其他变量的条目。只保留复合 PK 并尝试执行语句。