我正在将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();

08-26 21:32
查看更多