我想根据是否在两个实体之间创建一个可选的 ManyToOne 关联entity1.name equals entity2.nameOf1
,但我不想通过添加、删除、获取对象来维护我的服务层中的这种关系,我只希望当我得到一个 entity2 时, hibernate 将 a 添加left join entity1 e1 on e1.name = e2.nameOf1
到选择查询中,或者等待调用 entity2.getEntity1() 以where e1.name == ?
使用 nameOf1 作为参数来查询 entity1。到目前为止,我已经尝试过使用 @JoinFormula 注释,但关于它的文档很少。我正在使用带有注释的休眠版本 3.5.6。
@Entity
public class Entity1 {
@Id
@GeneratedValue
private Long id;
@Column(unique = true)
private String name;
...getter&setters...
}
@Entity
public class Entity2 {
@Id
@GeneratedValue
private Long id;
private String someProp;
private String nameOf1;
@ManyToOne(optional = true)
// How to join them? this doesn't work
// @JoinColumnsOrFormulas({ @JoinColumnOrFormula(formula =
// @JoinFormula(value = "nameOf1", referencedColumnName = "name")) })
// neither does
// @JoinColumnsOrFormulas({ @JoinColumnOrFormula(column =
// @JoinColumn(name = "nameOf1", referencedColumnName = "name",
// insertable = false, updatable = false, nullable = true)) })
//@Fetch(FetchMode.JOIN)
private Entity1 entity1;
...getter and setters...
}