Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.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 在Hibernate中更新并选择一个查询中的计数_Java_Spring_Hibernate_Spring Boot - Fatal编程技术网

Java 在Hibernate中更新并选择一个查询中的计数

Java 在Hibernate中更新并选择一个查询中的计数,java,spring,hibernate,spring-boot,Java,Spring,Hibernate,Spring Boot,我现在想知道是否有可能创建一个Hibernate查询,该查询在表中计数并将结果更新到父表中 我们在Spring Boot后端多次遇到这样的情况,我们在一个表上选择count(x),结果通过update语句持久化到父实体。所以我的问题是,这样的事情是否可能: @Modifying(clearAutomatically = true) @Query("UPDATE Post post SET post.commentsCount = (SELECT (count(comment) FROM Comm

我现在想知道是否有可能创建一个Hibernate查询,该查询在表中计数并将结果更新到父表中

我们在Spring Boot后端多次遇到这样的情况,我们在一个表上选择count(x),结果通过update语句持久化到父实体。所以我的问题是,这样的事情是否可能:

@Modifying(clearAutomatically = true)
@Query("UPDATE Post post SET post.commentsCount = (SELECT (count(comment) FROM Comments comment WHERE comment.post = :post)) WHERE post = :post")
void updateCommentCount(@Param("post")Post post);
使用正确的括号,它可以工作:)多亏了@Sana

@Modifying(clearAutomatically = true)
@Query("UPDATE Post post SET post.commentsCount = (SELECT count(comment) FROM Comments comment WHERE comment.post = :post) WHERE post = :post")
void updateCommentCounttest(@Param("post")Post post);

我认为使用本机postgreSQL是可能的,但是由于本机查询不利于维护,所以hibernate解决方案会很好。这个解决方案不起作用吗?您可以尝试
JPQL
HQL
ou
Criteria
QueryDSL
查询。@XtremeBaumer不,这是可能的。但是你需要正确地把括号放好,我认为使用原生postgreSQL是可能的,但是由于原生查询不利于维护,所以hibernate解决方案会很好。这个解决方案不起作用吗?你可以试试
JPQL
HQL
ou
Criteria
QueryDSL
Query。@XtremeBaumer不,这是可能的。但是你需要把括号放正确