【问题标题】:Is there a way with JPA CriteriaBuilder to fetch a non-entity object?JPA CriteriaBuilder 有没有办法获取非实体对象?
【发布时间】:2012-03-21 13:18:57
【问题描述】:

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

【问题讨论】:

  • 你有两个数据库,还是两个表? JPA 与实体一起工作。不带桌子。向我们展示这些实体及其映射。
  • 抱歉,我说错了。它是 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 获取此结果列表。

标签: jpa criteria-api openjpa


【解决方案1】:

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

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;
}

【讨论】:

    猜你喜欢
    • 2016-08-24
    • 2012-03-22
    • 2017-04-06
    • 1970-01-01
    • 1970-01-01
    • 2013-12-11
    • 2022-01-07
    • 2014-04-19
    • 1970-01-01
    相关资源
    最近更新 更多