我正在使用Hibrnate核心4.3.0。
我有2张桌子;表A与表B相关的M:N我有这个结构:
表A :
表B :
在表B中,主键是由ID_SOURCE和ID_TARGET组成的复合键。
现在我已经能够创建正确映射的所有类;现在我很乐意做出以下询问:
select
ID,
NAME,
STATE
from
TABLE_A this1, TABLE_B src1_
where
src1_.ID_SOURCE=4018
and src1_.ID_TARGET=this1.ID
现在我知道我可能会使用HQL和/或本机SQL来创建这种查询,但我很乐意使用Hibernate Criteria或更好的DetachedCriteria
是否可以使用DetachedCriteria创建此类查询?
谢谢
安吉洛
答案 0 :(得分:0)
我想我找到了使用setFetchMode的方法;基本上我写了这个DetachedCriteria(注意:我用fetch=FetchType.LAZY
映射了关系字段):
DetachedCriteria dc = DetachedCriteria.forClass(B.class);
dc.setFetchMode("tgtA", FetchMode.JOIN);
dc.add(Property.forName("srcA.id").eq(4018l));
在以下查询中,hibernate对此进行了转换:
select
b.ID_SOURCE,
b.ID_TARGET,
b.RELATION_NAME,
a.ID,
a.NAME,
a.STATE
from
B b
inner join
A a on b.ID_TARGET=a.ID_ENTITY
where
b.ID_SOURCE=?
现在我想知道当我执行这种查询时的表现是什么......这是正确的方法吗?
谢谢
安吉洛