【发布时间】:2021-05-14 21:08:00
【问题描述】:
@javax.persistence.Entity
public class Device extends AbstractEntity implements Serializable {
@ElementCollection
@LazyCollection(LazyCollectionOption.FALSE)
private List<String> labels;
}
现在我需要检查给定标签集是否存在哪些设备。
以下是我尝试过的查询器。
@Query("SELECT DISTINCT d FROM Device d JOIN d.labels l WHERE d.entity.id IN :entity_ids AND l IN :labels ")
List<Device> find(@Param("entity_ids") Set<Long> entityIds, @Param("labels") Set<String> labels);
@Query("SELECT d FROM Device d WHERE d.entity.id IN :entity_ids AND d.labels IN :labels") List<Device>
find(@Param("entity_ids") Set<Long> entityIds, @Param("labels") Set<String> labels);
这以 en 错误结束。
org.springframework.dao.InvalidDataAccessApiUsageException: 参数 值 [D2_label1] 与预期类型 [java.util.Collection] 不匹配 (n/a)];嵌套异常是 java.lang.IllegalArgumentException: 参数值 [D2_label1] 与预期类型不匹配 [java.util.Collection (n/a)] 在 org.springframework.orm.jpa.EntityManagerFactoryUtils.convertJpaAccessExceptionIfPossible(EntityManagerFactoryUtils.java:373) 在 org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:255)
谁能给我建议一个解决方案?
【问题讨论】:
标签: spring-boot hibernate spring-data-jpa