Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java H2使用truncate函数选择对象时按分组_Java_Hibernate_Jpa_H2 - Fatal编程技术网

Java H2使用truncate函数选择对象时按分组

Java H2使用truncate函数选择对象时按分组,java,hibernate,jpa,h2,Java,Hibernate,Jpa,H2,有了JPA(由Hibernate提供)和H2,我正试图做到这一点 String query = "select NEW domain.Activity(count(*), cast (truncate(startDateTime) as timestamp),type) from Event group by 2,3 "; TypedQuery<Activity> jQuery = em.createQuery(query, Activity.class); S

有了JPA(由Hibernate提供)和H2,我正试图做到这一点

    String query = "select NEW domain.Activity(count(*), cast (truncate(startDateTime) as timestamp),type) from Event group by 2,3 "; 

    TypedQuery<Activity> jQuery = em.createQuery(query, Activity.class);
String query=“选择新域.活动(计数(*),从事件组按2,3转换(截断(startDateTime)作为时间戳),类型);
TypedQuery jQuery=em.createQuery(查询,Activity.class);
问题是H2不允许我按“2”分组,因为它是函数的结果(您可以用其他语言进行分组,这样就不会太牵强了)

我能找到的唯一方法是用Hibernate生成的别名替换“2”(这似乎是一个非常糟糕的主意),因为Hibernate忽略了这一点,所以我不能给专栏提供我自己的别名,所以有没有使用H2的解决方案

为清楚起见:

    String query = "select NEW domain.Activity(count(*), cast (truncate(startDateTime) as timestamp),type) from Event group by col_1_0_,3 "; 

    TypedQuery<Activity> jQuery = em.createQuery(query, Activity.class);
String query=“按列1\u 0\u3从事件组中选择新域.Activity(count(*)、cast(truncate(startDateTime)作为时间戳)、type);
TypedQuery jQuery=em.createQuery(查询,Activity.class);

按预期工作,因为“col_1_0_”是hibernate应用于truncate列的别名

“TRUNCATE”和“count(*)一样是无效的JPQL。是的,但它们在使用H2或其他东西时是注册关键字。它确实有效。你没有正确地阅读问题,不必要地混淆了情况。不过我很感谢你的帮助。谢谢。我很感激它是不可移植的,我非常希望它是,但是JPQL不支持我想做的事情。H2是的,以前我让博士后做这件事,这很好,当然不可移植性是我现在要付出的代价,但事实是,无论我们多么热衷于可移植性如此惊人,我们只是还没有做到。没有两个数据库提供相同的功能集,每个数据库都提供了有用的高效功能,这些功能的使用效率通常比通过迭代结果集来实现相同的功能更高。我的问题很简单,有没有办法让它按我想要的方式工作。我不是在问我为什么在生活中失败,而你却在赢,我只是希望能迅速解决一个肮脏的问题。我确实知道获得相同结果的其他几种方法,我知道实现这一点的可移植方法是选择整个表并生成我自己的结果,但我担心大型数据表的效率,我想利用数据库的功能来缓解这种担忧。更不用说节省我的开发时间。