我有两个表之间的父/子关系,以及我的 Java 类中的相应映射。表格大致如下所示:
A (ref number, stuff varchar2(4000))
B (a_ref number, other number, foo varchar2(200))
和Java代码:
@Entity
class A {
@Id
@Column(name = "REF")
private int ref;
@OneToMany
@JoinColumn(name = "A_REF", referencedName = "REF")
private Set<B> bs;
}
@Entity
class B {
@Id
@Column(name = "A_REF")
private int aRef;
@Id
@Column(name = "OTHER")
private int other;
}
这很好用,但我想在从子表中检索到的行上添加一个过滤器。生成的查询如下所示:
select a_ref, other, foo from B where a_ref = ?
我希望它是:
select a_ref, other, foo from B where a_ref = ? and other = 123
附加过滤器将只是一个列名和一个硬编码值。有没有办法使用休眠注释来做到这一点?
我看过@JoinFormula
,但我总是必须从父表中引用列名(在name
JoinFormula 的属性中)。
提前感谢您的任何建议。