这会起作用 -
@OneToOne()
@JoinColumn(name = "id", referencedColumnName = "type_id")
@Where(clause = "type_name = OBJECTIVE")
public NoteEntity getObjectiveNote() {
return objectiveNote;
}
这就是我要做的 - 从表note
获取记录type_id
是当前对象的id
而type_name
是OBJECTIVE
}。
我无法使上述映射生效。我在这里做错了什么?
答案 0 :(得分:4)
这只是简单的不起作用,对不起:(你需要做到一对一,并且只需要使用单个元素获得一个集合。
如果你真的希望它以这种方式工作,你可以通过在连接表中存储外键ID和type_name并告诉它两个列构成外键来欺骗休眠。
答案 1 :(得分:1)
实际上,您可以通过指定@OneToOne
而不指定@Where
来实现此目的,但将@Where
放在引用的实体类上。我在Hibernate 4.3.11上测试了这个。
如果您不关心与@Where
不匹配的任何实体对象,则此方法有效。
如果您做关心其他实体,您可以创建一个子类实体,在其上放置@Where
并加入该子类。但我没有测试过这种情况。