Java org.hibernate.MappingException:实体映射中的重复列
我正在使用Hibernate 3.2.5。我在使用多对一映射时遇到上述异常。培训表与部门表存在多对一关系,即一个部门可以接受多个培训 例外情况是要求我在hbm文件中添加Java org.hibernate.MappingException:实体映射中的重复列,java,hibernate,Java,Hibernate,我正在使用Hibernate 3.2.5。我在使用多对一映射时遇到上述异常。培训表与部门表存在多对一关系,即一个部门可以接受多个培训 例外情况是要求我在hbm文件中添加insert=“false”update=“false”。如果我在hbm文件中添加此位,那么代码工作正常 以下是hbm文件: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibern
insert=“false”update=“false”
。如果我在hbm文件中添加此位,那么代码工作正常
以下是hbm文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.infy.model.Training" table="training">
<id name="Id" type="integer" column="ID">
<generator class="assigned"></generator>
</id>
<property name="trainerName">
<column name="TRAINER_NAME"></column>
</property>
<property name="deptId">
<column name="DEPT_ID"></column>
</property>
<property name="trainingSubject">
<column name="TRAINING_SUBJECT"></column>
</property>
<many-to-one name="departmentDetails" column="DEPT_ID"></many-to-one>
</class>
</hibernate-mapping>
如果我将此行更改为:
<many-to-one name="departmentDetails" column="DEPT_ID" insert="false" update="false"></many-to-one>
然后代码就工作了。我想知道增加这个的确切原因是什么
关于这一点,此场景的错误消息非常清楚(您没有把它放在这里,但我已经看过好几次了)。问题是您已经将列
DEPT\u ID
映射到类中的两个不同字段
首先,您已将其映射到属性deptId
,然后映射到departmentDetails
。正如您所发现的,只有当其中一个映射配置为insert=“false”update=“false”
时,hibernate才允许这样做
原因很简单。如果要将deptId
更改为另一个id,hibernate将需要更改在departmentDetails
中映射的类,这相当复杂
如果需要获取deptId,可以在
Training
上添加一个getDeptId方法,该方法返回departmentDetails.getId()
。并且不要提供setDeptId
您已经映射了DEPT\u ID列两次,如下所示:
<property name="deptId">
<column name="DEPT_ID"></column>
</property>
如果在映射文件中使用同一列名两次。可能是您遇到了映射异常
Initial SessionFactory creation failed.org.hibernate.MappingException:
同样,如果u标记insert=flase,update=false
若您尝试更新或插入表或其他旧系统中的记录,请尝试更新这些列值。它不会更新或插入该文件
请查看下面的链接。它将帮助您找到解决方案
谢谢
桑德普G
training.getDepartmentDetails().getId()
Initial SessionFactory creation failed.org.hibernate.MappingException: