java - Hibernate命名查询问题

标签 java hibernate

我有以下姓名查询

@NamedQuery(name="ScInstantTrack.getCustomerDetails", 
query="select b.cardDetail.mstCustomer.customerId, last_day(b.endDate), " +
        "LISTAGG(b.txnId,'|') WITHIN GROUP (ORDER BY b.endDate), " +
        "count(b.txnId), sum(b.amount), sum(b.balanceAmt), sum(b.redemptionAmt) " +
        "from ScInstantTrack b " +
        "where b.cardNo = b.cardDetail.cardBarcode " + 
        "AND b.cardDetail.mstCustomer.customerId = :customerId " + 
        "and b.startDate <= trunc(:todayDate) " + 
        "and b.endDate >= trunc(:todayDate) " + 
        "and b.cardDetail.mstStatus.statusId = 3003 group by b.cardDetail.mstCustomer.customerId, last_day(b.endDate)")

当我执行此查询时出现以下错误:

unexpected token: WITHIN

我正在使用 Oracle 数据库。

为什么我会收到此错误?如何解决这个问题?

最佳答案

尝试使用@NamedNativeQuery而不是@NamedQuery

另请检查this explanation它们之间的差异。

基本上,您使用的是 Oracle DB 中独有的表达式。换句话说 - 您想要执行 native 查询(Oracle DB 语言 native 查询)。命名查询使用 Java Persistence Query Language (即 HQL)。

关于java - Hibernate命名查询问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37297716/

相关文章:

java - 带注释的 Hibernate-如何从连接列表中进行选择?

java - 如何在两个不同的数据库服务器之间双向同步两个表?

java - JUnit 和 RMI 应用程序的最佳实践,RMI 注册表

java - libGDX:如何从数组中删除特定值

java - 有没有办法禁用 Hibernate 乐观锁定?

Java 和 XA 事务挑战

mysql - EJBQL/HQL 命名参数列表

java - Spring WebFlux,如何调试我的 WebClient POST 交换?

java - 如何在查询中转义Hibernate关键字?

java - 基于 JPA 的类的命令行