这是一个永无止境的故事:)
我在这个主题上阅读了很多帖子和文档,但我仍然不了解那里发生的事情。
我有一个孩子:
@Entity
public class Offer implements Serializable {
...
@JsonManagedReference
@ManyToOne(fetch = FetchType.LAZY, cascade = {CascadeType.MERGE, CascadeType.REFRESH})
@JoinColumn(nullable = false, name = "provider_id")
private Provider provider;
父母:
@Entity
public class Provider implements Serializable {
...
@JsonBackReference
@OneToMany(fetch = FetchType.LAZY, mappedBy = "provider")
private List<Offer> offers;
如果我拨打providerRep.findAll()
,它会导致无限循环。
如果我删除mappedBy="provider"
它有效。但我不能保留提议作为提供者的孩子。
如何正确配置? (没有循环)
如何直接将商品保存为提供商的子服务,而无需将其添加到提供商并保存提供商......(甚至可以吗?)
工作流程很简单: 我创造了&amp;保存提供者。然后为提供商节省很多优惠。所以没有cascading.PERSIST是必要的。
希望你能帮我理解我的问题。特别是这个&#34; mappedBy&#34;和JoinColumn点混淆了我。
编辑:
调用offerRepo.getOne():
2017-09-15 10:56:23.357 WARN 14128 --- [nio-8080-exec-1] .w.s.m.s.DefaultHandlerExceptionResolver :
Failed to write HTTP message: org.springframework.http.converter.Http
MessageNotWritableException:
Could not write JSON:
Infinite recursion (StackOverflowError); nested exception is com.fasterxml.jackson.databind.JsonMappingException:
Infinite recursion (StackOverflowError) (through reference chain: de.gaudiamo.content.entities.Provider_$$_jvstc64_7["offers"]->org.hibernate.collection.internal.PersistentBag
答案 0 :(得分:0)
尝试将@JsonBackReference更改为@JsonIgnore
答案 1 :(得分:0)
好的..我找到了某种解决方案。意见欢迎!
设置孩子:
public class Offer implements Serializable {
..
@JsonBackReference
@ManyToOne(fetch = FetchType.LAZY, cascade = {CascadeType.MERGE, CascadeType.REFRESH})
@JoinColumn(nullable = false, name = "provider_id")
private Provider provider;
和父母:
public class Provider implements Serializable {
...
@JsonManagedReference
@OneToMany(fetch = FetchType.LAZY, mappedBy = "provider", cascade = {CascadeType.MERGE, CascadeType.REFRESH}) //mappedBy= referenz attribute name in Offer
private List<Offer> offers;
和POM:
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.9.1</version>
</dependency>
!请注意,我在子级和父级中切换了@JsonManagedReference
和@JsonBackReference
! (我仍然不确定这些符号是如何工作的)
我有点担心以后会遇到几个问题。 我打开任何提示。
由于 格里