实体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
可能会或可能不会默认启用)