【发布时间】:2011-10-18 16:20:06
【问题描述】:
我有两个表之间的父/子关系,以及我的 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,但我总是必须引用父表中的列名(在 JoinFormula 的 name 属性中)。
提前感谢您的任何建议。
【问题讨论】:
-
很好奇,为什么不直接把它作为参数传入呢?
where a_ref = ? and other = ?。如果您需要这样做,传入的值可以硬编码(不过我建议使用可配置的属性系统)。
标签: java hibernate jpa jointable