0

我正在使用休眠版本 4.2

我有 2 个实体。

@Entity
public class A {

   Long Id;
  @ManyToOne
   B b;

}

@Entity
public class B {
   Long Id;
   //There is no relation back here with any annotations to A, and can't add a @OneToMany
}

是否可以使用 Hibernate Criteria 进行查询以获得如下所示的结果。

List<Map<B,List<A>>>? 不管是加入还是选择。

例如我想要的结果:

A.id  B.id

1    1,2,3,4
2    
3    5
4    7
5 

//三连

4

2 回答 2

0

你可以使用类似下面的东西。我不知道这是否是您的实际要求。假设B b是OneToOne,12是B的id,

Criteria c = session.createCriteria(A.class, "a");
        c.createAlias("a.b", "b"); 
        c.add(Restrictions.eq("a.b.Id", "12"));
        return c.list();

这将返回一个数组列表,通过使用这些数组,您可以形成您想要的。

于 2013-06-19T08:14:20.263 回答
0

我从编写了 Hibernate in Action 的 Christian Bauer 那里得到了帮助。

来自休眠的标准:

 List<Object[]> result =
                    session.createCriteria(A.class, "a")
                        .createAlias("b", "i", JoinType.RIGHT_OUTER_JOIN)
                        .setResultTransformer(PassThroughResultTransformer.INSTANCE)
                        .list();
于 2013-06-19T11:39:30.027 回答