当前位置: 首页 > 知识库问答 >
问题:

Quarkus JPA SQL结果集映射

段干帅
2023-03-14

我正在浏览Quarkus当前可用的指南

我说的是在不使用现有JPA实体的情况下,将SQL查询结果绑定到自定义pojo的可能性。我找到的所有示例都只从一个表中提取记录,从中提取出相同JPA实体的实例列表。然而,这不太可能是现实世界应用程序的常见用例。大多数情况下,我们必须处理不那么琐碎的查询,这些查询涉及来自不同表的字段的混合、连接或计算字段。

SQL ResultSet映射是一个方便的JPA功能,可以解决这个问题,但我找不到如何在Quarkus中使用它。

据我所知,有两种方法可以在JavaEE中声明ResultSet映射:

  • 要么在orm.xml声明他们
  • 使用@SqlResultSetMap注释。现在我认为Quarkus不支持orm.xml,我也不确定它是否支持@SqlResultSetMap。

您将在哪里添加@SqlResultSetMap注释?Quarkus会理解吗?有人有如何实现这一目标的工作示例吗?

共有1个答案

楮乐邦
2023-03-14

使用动态实例化怎么样?

public class CallStatistics {

    private final long count;
    private final long total;
    private final int min;
    private final int max;
    private final double avg;

    public CallStatistics(long count, long total, int min, int max, double avg) {
        this.count = count;
        this.total = total;
        this.min = min;
        this.max = max;
        this.avg = avg;
    }

    //Getters and setters omitted for brevity
}

CallStatistics callStatistics = entityManager.createQuery(
    "select new org.hibernate.userguide.hql.CallStatistics(" +
    "   count(c), " +
    "   sum(c.duration), " +
    "   min(c.duration), " +
    "   max(c.duration), " +
    "   avg(c.duration)" +
    ")  " +
    "from Call c ", CallStatistics.class )
.getSingleResult();
 类似资料:
  • 我有一个用户类,有16个属性,比如名字,姓氏,出生日期,用户名,密码等...这些都存储在MySQL数据库中,当我想要检索用户时,我使用ResultSet。我想将每一列映射回用户属性,但我这样做的效率似乎非常低。例如,我正在做: 也就是说,我检索所有的列,然后通过将所有的列值插入用户构造函数来创建用户对象。 有人知道更快、更整洁的方法吗?

  • 主要内容:ResultSet类型,ResultSet的并发性,浏览结果集,查看结果集,更新结果集SQL语句执行后从数据库查询读取数据,返回的数据放在结果集中。 语句用于从数据库中选择行并在结果集中查看它们的标准方法。 接口表示数据库查询的结果集。 对象维护指向结果集中当前行的游标。 术语“结果集”是指包含在对象中的行和列数据。 接口的方法可以分为三类: 浏览方法:用于移动光标。 获取方法:用于查看光标指向的当前行的列中的数据。 更新方法:用于更新当前行的列中的数据。 然后在基础数据库中更新数

  • 我在寻找更“改进的方法”来实现这一点,我有一种方法,从一个id中获取所有记录,然后“映射”到一个类中,我有大约200个“标记”要映射,这将是一个非常长的if链。。。例子:

  • 我有一个Spring批处理应用程序,需要从4个表中进行选择。问题是,我无法使用关系,将编写Enricher来选择完整数据。 目前我有几个问题: 是否可以以简单的方式从JpaRepository映射非实体(POJO)。我看到了的示例。我正在寻找自动映射(也许是JPA,而不是Spring Data)。我可以用结果精确地制作列名,但它不起作用。 将POJO标记为实体没问题,但有问题。实体需要。这对我来说

  • 我有一个JavaSE 8 Spring 4.1.6-RELEASE应用程序,我在其中实现了RowMapperorg.springframework.jdbc.core. 当我检查类时,我看到了一系列返回列值的方法: 是一般的期望/做法: 等等,对于所有的原始类型?对于的实例,其他一切都返回。 如果是这样,当类型化对象方法存在时,为不同类型提供所有方法有什么意义? 此外,每种方法的优缺点是什么? >

  • 我正在开发一个使用现有数据库的应用程序,该数据库只能通过存储过程访问。这些SP中的大多数返回来自多个表的列。 我们有一个数据访问层,它从我们的域对象层返回类型的对象。但是,由于SPs返回来自多个表的列,我不确定应该如何构建我的域对象,因为它们中的大多数不会“自然”映射到从SPs返回的数据。 示例:存储过程返回来自“员工”表和“经理”表的列: -员工ID -FirstName -LastName -