我有一个与第二个实体的列表具有@OneToMany关系的实体。
@OneToMany(fetch = FetchType.EAGER)
@JoinColumn(name = "PAYLD_ID")
@Fetch(FetchMode.SUBSELECT)
private List<KeyValueEntity> kvList;
因此子查询是单独完成的。我的问题是,当我需要解决一些交叉引用时,如何在子查询上运行自己的查询?
我希望能够在为List执行子查询时提供我自己的本机查询或命名查询。 可以在Hibernate中完成(使用4.2.21版)吗?
主要实体正在使用本机查询:
Payload {
long id;
string cd
@OneToMany(fetch = FetchType.EAGER)
@Fetch(FetchMode.SUBSELECT)
List<KeyValueEntity> kvList;
}
命名的本机查询(为简洁起见):
select pl.id, sct.cd from payload pl join SCT sct on sct.CSN = pl.TCSN
执行子查询以通过@OneToMany关系检索kvList时,我看到以下查询:
select kv.pl_id, kv.keycode, kv.value from KV kv where kv.pl_id=?
但是,我想将子查询(上面的)更改为:
select kv.pl_id, sct.CD, kv.value from KV kv join SCT sct on kv.keycode=sct.CDN where kv.pl_id=?
有办法吗?