Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.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
Mysql Spring JPA使用“生成查询”;(in)";_Mysql_Spring_Hibernate_Spring Data Jpa_Jpql - Fatal编程技术网

Mysql Spring JPA使用“生成查询”;(in)";

Mysql Spring JPA使用“生成查询”;(in)";,mysql,spring,hibernate,spring-data-jpa,jpql,Mysql,Spring,Hibernate,Spring Data Jpa,Jpql,我有两个映射到多对多的类:User和Topic。我想做的是得到所有的主题谁提供了用户有时(这对我来说是最奇怪的部分)它给了我以下错误: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:您的SQL语法有错误;检查与MySQL服务器版本相对应的手册,以获取第1行中使用的正确语法(接近“))” 我的课看起来像 我错过了什么 除了读取用户的FavoriteTopic关联之外,此查询没有提供任何内容?只需使用关联。而不是在我使用JOIN

我有两个映射到多对多的类:User和Topic。我想做的是得到所有的主题谁提供了用户有时(这对我来说是最奇怪的部分)它给了我以下错误:

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:您的SQL语法有错误;检查与MySQL服务器版本相对应的手册,以获取第1行中使用的正确语法(接近“))”

我的课看起来像


我错过了什么

除了读取用户的FavoriteTopic关联之外,此查询没有提供任何内容?只需使用关联。

而不是在我使用JOIN的语句中使用。这是我现在的问题:

SELECT t FROM Topic t JOIN t.favoritedBy u WHERE :user = u

调用JPQL查询的代码在哪里?包括设置参数?把那个片段贴在这里而不是别的地方else@DN1更新了存储库代码确保您在(.)中传递的
in
子句中的列表(或值数组)不是空的/null。但有时当我访问关联时,我会收到一个关于sessionMysql在使用in时无法处理空/空列表的异常,受到保护,例如:(coalesce(:idParam)在(:idParam)中为null或entity.id。但是,您可能应该对会话异常进行排序,因为任何时候您需要延迟加载一个assoc时,您都不能这样做。关于如何避免延迟/代理类型错误,有很多答案,这取决于您的堆栈(@Transaction),因为看起来您使用的是Spring数据
@Entity
@Table(name = "topic")
public class Topic {

   /* ... */

    @JsonIgnore
    @LazyCollection(LazyCollectionOption.TRUE)
    @ManyToMany(mappedBy = "favoriteTopics", fetch = FetchType.LAZY)
    private Set<User> favoritedBy;

   /* ... */
}
@Repository("topicRepository")
public interface TopicRepository extends JpaRepository<Topic, Integer> {

    /* ... */

    @Query("SELECT t FROM Topic t WHERE :user in t.favoritedBy")
    Set<Topic> favoritedBy(@Param("user") User user);

    /* ... */
}
select topic0_.* 
  from topic topic0_
  cross join favorite_topics favoritedb1_, user user2_ 
  where topic0_.topic_id = favoritedb1_.topic_id 
     and favoritedb1_.user_id = user2_.user_id 
     and (? in (.))
SELECT t FROM Topic t JOIN t.favoritedBy u WHERE :user = u