如何将下面的sql转换为jpql?我只是想计算子选择返回的行数。
select count(*) from (select t.prop1 from table1 t where t.someprop ='123' group by t.num);
我试过
@Query("Select count(*) from (select t.prop1 from table1 t where t.someprop ='123' group by t.num")
答案 0 :(得分:0)
我不认为它在语义上是合适的。 JPQL和SQL不可互换,它们与JPA和JDBC有不同的用途。 JPA的想法是你为对象完成了大部分关系数据库对象映射。
我认为您的方案中的相应操作是将EntityManager和JdbcOperations自动装配到您的存储库类中,并使用任何目的服务(尽管可以使用事务)
您还可以使用EntityManager.createNativeQuery
答案 1 :(得分:0)
您可以尝试以下代码。
String sql = "SELECT COUNT(t.prop1) FROM table1 t WHERE t.someprop ='123' GROUP BY t.num";
Query query = entityManager.createQuery(sql);
long count = (long)query.getSingleResult();
如果经常使用此查询,请尝试使用NamedQuery&还为someprop
设置参数,不要直接在查询中给出值,除非它是常量。