我有一个像这样的简单标准
学生只有一所学校,这只是一个说明性的例子。
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(
任何帮助都非常感激。