0
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对象加载/获取时,它应该使用unique_id(可能不是唯一的)来加载它的数据成员Department,而不是它的主键dept_id。如何使用注释来做到这一点?

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

4

1 回答 1

0

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 的搜索,明天它可能是另一列,你不能继续用注释来做这件事。注释映射器不适用于此。

希望这可以帮助。

于 2013-07-12T06:34:00.107 回答