如何创建一个休眠POJO,其中数据成员映射到一个不唯一的列


I have 2 tables : Employee and Department (many to one relationship)
My pojos look like this: 
@Entity
@Table(name = "employee")
class Employee {
@Id
private String employeeId;
@ManyToOne(cascade = CascadeType.ALL)
@JoinTable(name = "department", joinColumns = @JoinColumn(name = "university_id"))
private Department department;
}
@Entity
@Table(name = "department")
class Department {
@Id
private String deptId;
private String universityId;
}

因此,基本上当 Employee 对象加载/获取时,它应该使用university_id(可能不是唯一的(来加载其数据成员部门,而不是其主键dept_id。如何使用注释执行此操作?

我是休眠新手,请让我知道我需要做什么。问题总结:如何使用其主键或另一个 POJO 中唯一列以外的任何列加载对象?

OneToMany,ManyToOne 语义用于主外键。您正在尝试在另一列而不是外部连接两个表,这不好,

我宁愿使用带有 where 子句的内部连接。在纯sql中,本来是这样。

select * from Employee e inner join Department d on e.employeeId = d.deptId where universityId = ?

总部

from Employee e inner join fetch e.department d where d.universityId = ?

您的ID数字并不奇怪。

可以使用条件生成器或命名查询来执行查询。今天你想限制对大学ID的搜索,明天它可能是另一列,你不能继续用注释这样做。注释映射器不适用于此目的。

希望这有帮助。

最新更新