Spring Data JPA Query + Crosstable

时间:2014-07-24 11:58:50

标签: java spring spring-data-jpa

我有三个数据库表(MariaDB):

A:
+----+
| ID |[...]
+----+

B:
+----+
| ID |[...]
+----+

A_B (Crosstable)
+-----+-----+
| AID | BID |
+-----+-----+

现在我有一个实体A的实例,想要使用Spring Data JPA存储库获取一个列表:

public interface BRepository extends JPARepository<B, Long> {
    List<B> bList = findByAId(Integer aId);
}

此解决方案工作。解决这种关系的正确方法是什么?该文档仅显示非常简单的查询,即按列值查询。

实体本身可以正常工作,我可以正确存储数据。如果我没有提供所有必要的信息,请告诉我。

添加了信息(实体的相关部分):

Entity B:
[...]
 @ManyToMany(mappedBy = "B")
List<A> aList;
[...]

Entity A:
[...]
@ManyToMany
@JoinTable(name = "A_B",
        joinColumns = {
                @JoinColumn(
                        name = "a_id",
                        referencedColumnName = "id"
                )
        },
        inverseJoinColumns =
                @JoinColumn(
                        name = "b_id",
                        referencedColumnName = "id"
                )
)
private List<B> bList = new ArrayList<B>();
[...]

1 个答案:

答案 0 :(得分:1)

好的,最后它比我想象的容易得多。我只需要打电话:

List<b> bList = aRepository.findOne(id).getBList();