Hibernate标准右外连接结果列表

时间:2013-01-21 07:23:39

标签: java hibernate hibernate-criteria

我正在与所有者进行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);

在这种情况下,我正在检索所有非埃及猫主人以及目前没有分配品种的所有猫主人,这是我的确切方案,但数据不同。

我知道这听起来很奇怪,但这是我要求的确切查询。

此外,即使我不转换列表数据,我也不知道其中的内容,所以我可以迭代它......

2 个答案:

答案 0 :(得分:3)

经过很多令人头疼的别名后,我得到了我想要的东西=)

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();

答案 1 :(得分:1)

正如你所说的那样“猫有一个主人,但主人可以有很多猫。”你怎么能得到所有者名单,如果你想要所有者名单所以不需要做外部加入或任何其他加入只是提供所有者的id或得到所有所有者没有任何条件。