查询中的JPA in子句

时间:2017-11-01 11:48:38

标签: java mysql jpa

我有一个包含数据列表的Api类:

public class Api {
    private String id;

    @ManyToMany
    private List<Data> datas; 
}

我有一个扩展crud存储库的ApiRepository我定义了一个查询:

@Query(value="select api from Api api where :data in (api.datas)")
public List<Api> getDatas(@Param("data") data)

执行查询时出现此错误:

  

org.springframework.dao.InvalidDataAccessResourceUsageException:   无法提取ResultSet; SQL [不适用];嵌套异常是   org.hibernate.exception.SQLGrammarException:无法解压缩   具有根本原因的ResultSet]

     

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:你有一个   SQL语法错误;查看与您的手册相对应的手册   MariaDB服务器版本,用于在&#39;)附近使用正确的语法。&#39;在第1行

1 个答案:

答案 0 :(得分:0)

您必须从查询中删除使用括号(api.datas)

@Query(value="select api from Api api where :data in api.datas")

如果您有多个值,可以使用括号,例如:

select api from Api api where :data in ('value1', 'value2', 'value3')