我正在将Cats与所有者进行正确的外部连接,结果如何获得所有者列表?
Criteria criteria = session.createCriteria(Cats.class);
List<Owners> list= criteria.createCriteria("owner",JoinType.RIGHT_OUTER_JOIN);
一只猫有一个主人,但一个主人可以养很多猫。
编辑:
这样做的原因是,为了能够基于更多关系对标准添加限制,让我详细说明一下。
Criteria criteria = session.createCriteria(Cats.class);
criteria.add(Restrictions.or(Restrictions.isNull("breed.pkBreed")).add(Restrictions.ne(breed.desc,"Egyptian cat")));
List<Owners> list= criteria.createCriteria("owner",JoinType.RIGHT_OUTER_JOIN);
在这种情况下,我要检索所有非埃及猫的主人和所有当前未分配任何品种的猫主人,这是我的确切情况,但是数据不同。
我知道这听起来很奇怪,但这是我所需要的确切查询。
另外,即使我不转换列表数据,我也不知道其中的内容,因此我可以对其进行迭代...
最佳答案
在对别名感到头疼之后,我得到了想要的东西=)
Criteria criteria = session.createCriteria(Cats.class,"c");
criteria.add(Restrictions.isNull("breed.pkBreed"));
criteria.createCriteria("owner","o",JoinType.RIGHT_OUTER_JOIN,Restrictions.eq(c.breed.desc,"Egyptian cat"))
.setProjection(Projections.projectionList()
.add(Projections.property("o.pkOwner").as("pkOwner"))
.add(Projections.property("o.name").as("name"))
.setResultTransformer(Transformers.aliasToBean(Owners.class));
List<Owners> list=criteria.list();