如何创建一个Hibernate POJO,其数据成员映射到一个非唯一的列

时间:2013-07-12 05:55:48

标签: hibernate hibernate-mapping hibernate-annotations

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(可能不是唯一的)来加载其数据成员Department,而不是它的主键dept_id。我怎么能用注释做到这一点?

我是hibernate.please的新手。让我知道我需要做什么。总结问题:如何使用除其主键或来自另一个POJO的唯一列以外的任何列加载对象?

1 个答案:

答案 0 :(得分:0)

OneToMany,ManyToOne语义用于主外键。你试图在另一列上加入两个表,而不是外来的,这不好,

我宁愿在where子句中使用内连接。 在纯sql中它本来就是。

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

HQL

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

你的ID不是数字怪。

您可以使用条件构建器或命名查询来执行查询。 今天你想明天限制大学id的搜索它可能是另一个专栏,你不能继续用注释做这个。注释映射器不适用于此。

希望这有帮助。