从@ElementCollection搜索对象

2022-09-03 15:20:03

我正在使用Spring Data JPA。

我是一个这样的实体

public class A {

    @CollectionTable(name = "B_ITEMS", joinColumns = @JoinColumn(name = "B_ID"))
    @ElementCollection
    private List<B> bs;

}

和一个嵌入式类

@Embeddable
public class B { 

private String prop1


private String prop2


private String prop3

}

如何使用 B @ElementCollection内容搜索实体 A?

这是我的存储库Spring Data JPA Repositry

public interface ARepo extends PagingAndSortingRepository<Clinic, Long> {

}

什么查询方法名称适用于我的用例?


答案 1

您似乎在Spring Data中要求一个基本的IN查询 -findBybsIn(List<B> bs)


答案 2

@ElementCollection只是映射关系的简单方法。@OneToMany

因此,您可以像往常一样加入它们:

public interface ARepo extends PagingAndSortingRepository<A, Long> {
    @Query("select a from A a join a.bs b where b.prop1 = :prop1 and ...")
    A findByProps(@Param("prop1") String prop1)
}

推荐