0
给定一个类Foo,Bar有hibernate映射到表Foo,A,B和CHibernate查询匹配对象ID的对象列表
public class Foo {
Integer aid;
Integer bid;
Integer cid;
...;
}
public class Bar {
A a;
B b;
C c;
...;
}
我构建了一个任意大小的List fooList,我想用hibernate来获取List里面的结果列表将看起来像这样:
Bar[1] = [X1,Y2,ZA,...]
Bar[2] = [X1,Y2,ZB,...]
Bar[3] = [X1,Y2,ZC,...]
Bar[4] = [X1,Y3,ZD,...]
Bar[5] = [X2,Y4,ZE,...]
Bar[6] = [X2,Y4,ZF,...]
Bar[7] = [X2,Y5,ZG,...]
Bar[8] = ...
其中每个Xi,Yi和Zi代表一个独特的对象。
我知道我可以迭代fooList并获取每个List并调用barList.addAll(...)来构建结果列表,如下所示:
List<bar> barList.addAll(s.createQuery("from Bar bar where bar.aid = :aid and ... ")
.setEntity("aid", foo.getAid())
.setEntity("bid", foo.getBid())
.setEntity("cid", foo.getCid())
.list();
);
有没有更简单的方法,理想情况下是一个更好地利用hibernate并进行最少量的数据库调用?
我错过了什么吗?休眠不适合这个吗?
FOO和BAR是否将FK和FH分开的表格都映射到映射A,B,C等的表格上? FOO和BAR之间的自然关系是什么?将FK列映射为整数而不是其映射对象的动机是什么?这是一个非Hibernate的事情。 一个假设通过更好地使用休眠你的意思是,能够通过一个对象关系访问这个列表? – Affe 2010-05-26 16:42:50
Foo是一个主表,Bar是一个细节表。 A,B,C都与主和细节都有FK关系。它们是之前项目正常化的结果。我可以将Ids切换为正确的对象关系。 – sal 2010-05-26 19:38:18