2012-03-03 67 views
0

假设我想从2个数据库中进行选择。 Database1有字段A,B和C. Database2有字段D,E和F.我有一个由字段X,Y和Z组成的POJO。我想编写一个CriteriaBuilder查询来选择所有的B,D和F字段在结果集中,将它们映射到POJO中的字段X,Y和Z,返回我的POJO对象列表。这可能吗?我可以用本机查询来做到这一点,但我不想使用本机查询。有没有JPA CriteriaBuilder获取非实体对象的方法?

+0

你有两个数据库,还是两个表? JPA与实体合作。不与表。向我们展示这些实体及其映射。 – 2012-03-03 08:46:05

+0

对不起,我错过了。它是2个表格...不是2个数据库。 Entity1映射到Table1并包含字段A,B和C. Entity2映射到Table2并包含字段D,E和F.我想从中选择,但我希望我的结果成为第三个非实体的列表POJO。我希望我的POJO包含3个字段 - X,Y和Z.我希望这3个字段分别包含来自Entity1.B,Entity2.D和Entity2.F的查询结果。我希望能够执行查询并使用CriteriaBuilder获取结果列表。 – user1148956 2012-03-03 14:27:10

+0

[我可以使用JPA 2.0 CriteriaBuilder获取非实体对象列表吗?](http://stackoverflow.com/questions/9551214/can-i-use-the-jpa-2-0- criteriabuilder到取入一个一览的-非实体对象) – DataNucleus 2012-03-04 06:26:52

回答

2

您可以尝试使用下面的查询返回其他实体初始化的实体:如需要

SELECT NEW com.package.Entity3(e1.b, e2.d, e2.f) FROM Entity e1, Entity e2; 

然后,你必须提供类似签名的构造函数,如查询,在这里你可以设置字段值。

public Entity3(int b, int d, int f){ 
    x = b; 
    y = d; 
    z = f; 
}