java中hibernate中的复合键联接
我使用hibernate来持久化两个表,Project和Department Department表具有复合主键DeptCompID 保存表的代码 每次我持久化项目表和部门表时,项目表中的DeptID列在应该为60时总是为null。 为什么@mapsideptid不起作用?有些可以提供解决方案java中hibernate中的复合键联接,java,hibernate,Java,Hibernate,我使用hibernate来持久化两个表,Project和Department Department表具有复合主键DeptCompID 保存表的代码 每次我持久化项目表和部门表时,项目表中的DeptID列在应该为60时总是为null。 为什么@mapsideptid不起作用?有些可以提供解决方案 @Embeddable public class DeptCompID implements Serializable { @Column(name = "Dep
@Embeddable
public class DeptCompID implements Serializable
{
@Column(name = "DeptID")
private int DeptID;
@Column(name = "RoleID")
private int RoleID;
//getters and setters
}
@Entity
public class Department implements Serializable
{
@EmbeddedId
private DeptCompID id;
private String name;
@OneToOne(mappedBy="department",targetEntity = Project.class)
private Project pro;
//getters and setters
}
@Entity
public class Project
{
@Id
private int ProId;
@OneToOne(targetEntity = Department.class)
@MapsId("DeptID")
@JoinColumns({
@JoinColumn(name = "RoleID", referencedColumnName = "RoleID"),
@JoinColumn(name = "DeptID", referencedColumnName = "DeptID")
})
private Department department;
//getters and setters
}
Department department = new Department();
department.setName("HR");
DeptCompID cpk=new DeptCompID();
cpk.setRoleID(10);
cpk.setDeptID(60);
department.setId(cpk);
Project pro=new Project();
pro.setDepartment(department);
pro.setProId(10);
department.setPro(pro);
session.save(department);
session.save(pro);