【发布时间】:2014-03-04 06:37:14
【问题描述】:
我有两张表 Employee 和 Project
Table Employee
emp_id(PK- assigned) | emp_name | prj_id(FK prj_id of Project table)
Table Project
prj_id(PK- auto generated) | prj_name
我在员工和项目之间使用多对一关系
问题:当我运行以下代码时:
Project pro = new Project();
emp.setProject(pro);
saveDetails(emp);
public void saveEmployeeDetails( final Employee emp)
{
try
{
this.hibernateTemplate.saveOrUpdate( emp);
}
catch (Exception exception)
{
logger.info( "Unable to save details", exception );
}
}
它正在更新 Table Employee 和 Project 但在 Project 中它正在为已经存在的相同 proj_name 创建新条目。它正在更新 Table Employee 的数据和。
由于 Employee 有自动生成的主键,而且每次保存新对象时我都会为 Project 创建新对象。如何避免重复输入,我对休眠很陌生。我对此知之甚少。
查找 hbm 文件
<class name="Employee"
table="employee">
<comment>store details of a project</comment>
<id name="employeeId" type="string">
<column length="45" name="emp_id" />
<generator class="assigned" />
</id>
<many-to-one cascade="save-update"
class="Project" fetch="select" lazy="false"
name="project">
<column name="prj_id" not-null="true" />
</many-to-one>
<class name="Project"
table="project">
<id name="projectId" type="int">
<column name="prj_id" />
<generator class="identity" />
</id>
<property generated="never" lazy="false" name="projectName"
type="java.lang.String">
<column name="prj_name" />
</property>
</class>
【问题讨论】:
-
可以使用 session 或 hibernatetemplate....获取项目名称或项目 ID 或项目对象正确如果我错了我只是一天在休眠中的 exp