【问题标题】:Spring Data JPA check if a SET contains an objectSpring Data JPA 检查 SET 是否包含对象
【发布时间】:2026-02-22 14:00: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);

【问题讨论】:

    标签: java jpa spring-boot spring-data object-persistence


    【解决方案1】:

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

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

    【讨论】: