java - 如何使用JPA选择 native 表列?

标签 java sql jpa

我想使用 JPA 从表中选择几列。 在这种情况下,我对完整的实体不感兴趣,而只对具有某些 ID 的几列感兴趣。

这就是我的方法:

EntityManager em = createEntityManager();
List<Object[]> data = em.createNativeQuery( "SELECT ID, FOREIGN_OBJ_1_ID, FOREIGN_OBJ_2_ID FROM TABLE1" ).getResultList();
em.close();

for ( Object[] row : rentaldata )
{
     Long id = ( (BigDecimal) row[0] ).longValue();
     Long fk_1 = ((Long) row[1]);
     Long fk_2 = ((Long) row[2]);

      DataObject do = new DataObject(id, fk_1, fk_2, ...);
...

我也尝试过使用 JPA select new .... 但我想确保没有创建任何对象。 所以我的问题是:是否有更好的方法来加载多个列并将它们放入一个对象中?

谢谢, 托尔斯滕

最佳答案

您可以使用SqlResultMapping。尝试这样的事情:

 Query q = em.createNativeQuery(
        "SELECT o.id AS order_id, " +
            "o.quantity AS order_quantity, " +
            "o.item AS order_item, " +
            "i.name AS item_name, " +
        "FROM Order o, Item i " +
        "WHERE (order_quantity > 25) AND (order_item = i.id)",
    "OrderResults");

    @SqlResultSetMapping(name="OrderResults", 
        entities={ 
            @EntityResult(entityClass=com.acme.Order.class, fields={
                @FieldResult(name="id", column="order_id"),
                @FieldResult(name="quantity", column="order_quantity"), 
                @FieldResult(name="item", column="order_item")})},
        columns={
            @ColumnResult(name="item_name")}
    )

更多详情herehere

关于java - 如何使用JPA选择 native 表列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60633926/

相关文章:

mysql - 我无法在带有 auto_increment 列的表中插入一行

java - 通过 JPA 将记录插入数据库

java - 如何将选项 1 和 2 中的输入打印到选项 3?这是我的代码

java - 类变量

java - 是否有 API 可以获取 GCP AI Hub 中的所有公共(public)类别

java - 在 Java 中, boolean 运算还是整数运算更快?

mysql - Left Outer Join (MySQL) 问题,这个查询有什么问题?

sql - 按特定值排序 - ORDER BY

spring - 如何在 Tomcat 上使用 JPA、Hibernate 和 Spring 避免类加载器泄漏

java - 如何在 jsonb postgresql 中查询并转换为谓词 JPA