使用Criteria优化hibernate中的查询(避免不必要的连接)

时间:2013-03-12 14:45:00

标签: java sql hibernate criteria

我有一个班级A,里面有另一个班级B。像这样:

@Table(name = "A")
Class A {
    @OneToOne
    @JoinColumn(name="B_ID")
    B b;
} 

我希望得到这样的查询:

SELECT * from A where B_ID = 4

但是当我使用Criteria来实现我的目标时,内部联接这两个表。我怎么能像我说的那样SELECT

<小时/> 如果它有帮助,我的评论标准是这样的:

DetachedCriteria crit = DetachedCriteria(A.class, "a");
crit.createAlias("a.b", "b");
crit.add(Restrictions.eq("b.id", 4));
getHibernateTemplate().findByCriteria(crit);

2 个答案:

答案 0 :(得分:2)

默认情况下,在Hibernate中急切地获取一对一的关系 - 这就是你获得内部联接的原因。试试这个:

@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name="B_ID")
B b;

答案 1 :(得分:0)