【发布时间】:2020-09-04 16:50:04
【问题描述】:
在我的 Spring Boot Rest 应用程序中,我有三个模型类
User,
Business,
Review
用户.java
@OneToMany(cascade = CascadeType.ALL, mappedBy = "partner",fetch =
FetchType.LAZY)
private Set<Business> business;
@OneToMany(fetch=FetchType.LAZY,cascade=CascadeType.ALL,mappedBy="user")
private List<Review> reviews;
Business.java
@OneToMany(fetch=FetchType.LAZY,cascade=CascadeType.ALL,mappedBy="business")
private List<Review> reviews;
@JoinTable(name = "business_service",
joinColumns = { @JoinColumn(name = "business_id_fk") },
inverseJoinColumns = { @JoinColumn(name = "serviceIdFk") })
private List<ServiceVO> services = new ArrayList<ServiceVO>();
Review.java
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "businsessIdFk")
private Business business;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "addedBy", nullable = false)
private User user;
当我尝试通过 Repository 查找具有 business_id 的业务时,我得到一个无限递归 Json 列表。 我必须找到带有 user_id 的用户,但也会发生同样的事情。
任何帮助将不胜感激
注意:我已经使用了答案中提到的 JsonIgnore。它给我带来了另一个杰克逊绑定错误
com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No
serializer found for class
org.hibernate.proxy.pojo.bytebuddy.ByteBuddyInterceptor and no
properties discovered to create BeanSerializer (to avoid exception,
disable
SerializationFeature.FAIL_ON_EMPTY_BEANS) (through reference chain:
com.ovoox.model.Business["services"]-
>org.hibernate.collection.internal.PersistentBag[0]-
com.ovoox.model.ServiceVO$HibernateProxy$
TOMK9CML["hibernateLazyInitializer"])
【问题讨论】:
-
序列化时是否使用 ObjectMapper 实例?
-
@Eric 请查看更新后的问题
-
@ustaad 请使用正确的包类 org.codehaus.jackson.annotate.JsonIgnore
-
这将解决问题。
-
spring.jackson.serialization.fail-on-empty-beans=false ,在你的属性文件中使用它。
标签: hibernate spring-boot spring-data-jpa hibernate-mapping