Java Hibernate Criteria leftOuterJoin标准是没用的?

时间:2014-08-19 16:05:18

标签: java mysql sql hibernate criteria

我有一个像这样的简单标准

学生只有一所学校,这只是一个说明性的例子。

private List<Student>getData()
{
    final Session session = ...............
    final Criteria criteria = session.createCriteria(Student.class);
    final Criteria criteria2 = criteria.createCriteria("school","school",JoinType.LEFT_OUTER_JOIN,isNotNull("status"));
    return criteria.list();
}

我需要学生,即使他们没有学校......但如果他们有学校,我需要Status不是NULL

我想知道这是否

 criteria.createCriteria("school","school",JoinType.LEFT_OUTER_JOIN,isNotNull("status"));

使用left-outer-join的过滤器无用,因为我收到了Schools with null status

但如果我申请

final Criteria criteria2 = criteria.createCriteria("school","school",JoinType.LEFT_OUTER_JOIN);
criteria2.add(isNotNull("status"));

它有效或如果我申请

criteria.createCriteria("school","school",JoinType.INNER_JOIN,isNotNull("status"));

也可以。

我的问题是

我永远不应该使用left-Outer-Join在createCriteria o createAlias中放置Criterions或过滤器,它们是否被忽略或者如何使用?

使用ON或使用.add(

在常规标准中使用相同标准之间的差异是什么?

任何帮助都非常感激。

0 个答案:

没有答案
相关问题