使用COUNT生成JPA本机查询(DISTINCT obj)

时间:2010-12-13 21:48:39

标签: jpa count distinct jpql

请帮我解决OpenJPA 1.2.x上的JPQL查询问题 这是我的查询文本:

  

从Event中选择count(distinct evt)   evt WHERE(evt.beginDate> =   :startOfPeriod和evt.beginDate< =   :endOfPeriod)ORDER BY evt.beginDate   ASC

在运行时我收到错误:

  

  org.apache.openjpa.persistence.ArgumentException:   DB2 SQL错误:SQLCODE = -119,   SQLSTATE = 42803,SQLERRMC = BEGIN_DATE,   DRIVER = 3.59.81 {prepstmnt 1520523937   SELECT COUNT(DISTINCT t0.ID),   t0.BEGIN_DATE       来自COMPANY.EVENT t0       WHERE(t0.BEGIN_DATE> =?AND t0.BEGIN_DATE< =?)优化1行   [params =(Timestamp)2010-12-14   00:00:00.0,(时间戳)2010-12-14   23:59:59.999]} [code = -119,   状态= 42803]

为什么JPA会在select子句中打印字段 t0.BEGIN_DATE ? 为什么JPA在本机SQL中错过了ORDER BY子句? 例如,此查询(在select子句中没有t0.BEGIN_DATE)有效:

SELECT COUNT(DISTINCT t0.ID) 
    FROM CALENDAR.EVENT t0
    WHERE (t0.BEGIN_DATE >= null AND t0.BEGIN_DATE <= null)

我为成功执行SQL查询

设置了null

这是某种错误吗?

1 个答案:

答案 0 :(得分:3)

哦,伙计......只需删除“ORDER BY evt.beginDate asc”。 如此愚蠢。我算一算,我不需要订单...... 问题已由我自己解决。对不起,请原谅。