Spring Data JPA 检查 SET 是不是包含对象

Posted

技术标签:

【中文标题】Spring Data JPA 检查 SET 是不是包含对象【英文标题】:Spring Data JPA check if a SET contains an objectSpring Data JPA 检查 SET 是否包含对象 【发布时间】:2018-07-02 10:49:01 【问题描述】:

我有一个具有此属性的名为 Device 的域对象

@ManyToMany(cascade = CascadeType.MERGE, fetch = FetchType.EAGER)
private Set<Driver> authorizedDrivers = new HashSet<>();

我想进行此查询,但出现错误 (antlr.NoViableAltException: 意外的 AST 节点:()

@Query("select dev from Device dev where dev.authorizedDrivers.contains(?1) ")
Set<Device> findDeviceByDriver(Driver driver);

【问题讨论】:

【参考方案1】:

JPQL 没有“包含”表达式。你可以试试这个查询:

@Query("select dev from Device dev join dev.authorizedDrivers d where d = ?1")
Set<Device> findDeviceByDriver(Driver driver);

【讨论】:

以上是关于Spring Data JPA 检查 SET 是不是包含对象的主要内容,如果未能解决你的问题,请参考以下文章

即使 JPA 实体不脏,我是不是可以强制 spring-data 更新可审计字段?

检查 Spring 数据 JPA 查询中的 List 参数是不是为空

Spring Data JPA:是不是可以让spring从表格底部检索数据到顶部顺序

对 Spring Data JPA @Query 进行单元测试是不可能的,真的吗?

Spring Data JPA @Modifying 是不是有任何用途而不指定其属性?

Spring Data JPA 参考文档二