java - 如何在 JPA @Query 注释中使用 IN 子句

标签 java hibernate jpa orm entitygraph

我已经定义了这个方法

 @Query("select cs from CenterStudy cs where cs.id in (?1)")
 @EntityGraph(value = "centerStudyAndNotifiedUsers", type = EntityGraph.EntityGraphType.LOAD)
 List<CenterStudy> findAllByIdsWithCenterAndUsers(List<Long> ids);

带有 ids 的列表不为空,也不为空,但我总是得到以下异常:

java.lang.NullPointerException
    at org.hibernate.param.NamedParameterSpecification.bind(NamedParameterSpecification.java:67)
    at org.hibernate.loader.hql.QueryLoader.bindParameterValues(QueryLoader.java:613)
    at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1900)

我很确定它与 IN 子句的定义方式有关。

欢迎任何建议!

最佳答案

这是一个常见问题,是 Hibernate 中的一个错误,您可以在以下位置找到它:

NullPointer when combining JPQL query with in clause and @NamedEntityGraph 它说的是:

When you combine a JPQL query with an in clause and a @NamedEntityGraph you get a NullPointerException in org.hibernate.param.NamedParameterSpecification.bind(NamedParameterSpecification.java:67) when you execute the query.

因此,您必须在此处删除 @EntityGraph 注释才能解决此问题。

关于java - 如何在 JPA @Query 注释中使用 IN 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31450127/

相关文章:

hibernate - 连接表记录删除时违反参照完整性约束

java - 如何自动增加postgresql中的id?

java - id 列和 JPA 的问题

Java 计时器 - 无论如何将其更改为在打开页面时自动启动而不是单击开始

java - 有效地删除 Java 中 arraylist 中每个数组的第一个元素

java - 在 Java 中使用单选按钮

java - 无法将语言特定字符保留到 xml 数据类型的数据库列中

java - 在 Java 游戏中,按下一个键会取消仍然按下的另一个键

java - 两天之间的 hibernate 标准

java - Spring JPA : no transaction is in progress