如何检索所有具有在JPA的子实体中定义的多对一关系的子的父?



实体A

@Entity
class A {
...
private String propertyA;
private String propertyA1;
}
<<p>实体strong> B
@Entity
class B {
...
@ManyToOne()
private A a;
private String propertyB;
private String propertyB1;
}

存储库

@Repository
interface A extends CrudRepository<A, Long> {
}
@Repository
interface B extends CrudRepository<B, Long> {
}

如何检索所有A(s)及其子女。我想要一个类似这样的JSON对象。

[
{
"propertyA": "..",
"propertyA1": "..",
"B": [
{
"propertyB": "1B",
"propertyB1": "1B1"
},
{
"propertyB": "2B",
"propertyB1": "2B1"
}
]
},
{
"propertyA": "..",
"propertyA1": "..",
"B": [
...
]
}
]

是否有办法在JPA中实现这一点?我是Springboot和JPA的新手。

只需在A中添加一个@OneToMany(mappedBy = "a") @JsonProperty("B") private Set<B> bs;

要使其工作,您需要确保在持久化上下文仍然打开时获取bs属性。您可以通过(1)将fetch = EAGER添加到@OneToMany,(2)使用查询图获取A,或(3)通过将spring.jpa.open-in-view设置为true来启用OpenEntityManagerInViewFilter

(根据SB版本,spring.jpa.open-in-view可能会或可能不会默认启用)

最新更新