繁体   English   中英

Spring Data JPA @Query注释的子句错误

[英]IN-clause error with Spring Data JPA @Query annotation

在Spring Data @Query中使用IN子句时出现IN OUT错误。

查询:

@Query("SELECT m FROM message m WHERE m.user = :user AND m.tags IN :tags")
List<Message> findByUserAndTags(@Param("user") User user, @Param("tags") List<Tag> tags);

错误:

Caused by: java.sql.SQLException: Missing IN or OUT parameter at index:: 2

使用Spring Data自动查询时,子句可完美工作:

List<Message> findByUserAndTagsIn(User user, List<Tag> tags);

使用@Query注释时我丢失了某些内容?

您可以使用LEFT JOIN解决:

@Query("SELECT m FROM message m LEFT JOIN m.tags t
        WHERE m.user = :user 
        AND t IN :tags")
List<Message> findByUserAndTags(@Param("user") User user, 
        @Param("tags") List<Tag> tags)

您是否尝试过这样:

 @Query("SELECT m FROM message m WHERE m.user = ?1 AND m.tags IN ?2")
    List<Message> findByUserAndTags(User user, List<Tag> tags);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM