会有用吗-
@OneToOne()
@JoinColumn(name = "id", referencedColumnName = "type_id")
@Where(clause = "type_name = OBJECTIVE")
public NoteEntity getObjectiveNote() {
return objectiveNote;
}
这就是我要做的-从表note
中获取记录,其type_id
是当前对象的id
,type_name
是OBJECTIVE
。
我不能让上面的Map工作。我做错了什么?
3条答案
按热度按时间e5nqia271#
这是不起作用的,对不起:(你需要一对多地完成它,并接受一个只有一个元素的集合。
如果你真的希望它以这种方式工作,你可以欺骗hibernate,把外键ID和type_name都存储在一个连接表中,并告诉它这两列都构成了外键。
2jcobegt2#
实际上,您可以通过指定
@OneToOne
而不指定任何@Where
,但将@Where
放在引用的实体类上来实现这一点。我在Hibernate 4.3.11上测试了这个。如果您不关心任何与
@Where
不匹配的实体对象,则可以使用此方法。如果你关心其他实体,你可以创建一个子类实体,把
@Where
放在上面,然后加入这个子类。但我没有测试过这个场景。qltillow3#
您可以尝试使用
JoinColumnsOrFormulas
注解。即使对
type_name = OBJECTIVE
进行了额外的过滤,也应该会产生连接条件。