- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 spring 4.0.1、hibernate 4.3.5、jackson 1.9.2 和 STS IDE我正在创建一个以 JSON 格式返回数据的 RESTful 网络服务当我使用 Hibernate 代码生成器时,它会为源生成由 @OneToMany(fetch = FetchType.LAZY, mappedBy = "user")
注释的关联实体的 getter 和 setter和 @ManyToOne(fetch = FetchType.LAZY)
供引用这会在序列化期间导致无限递归。我尝试使用 Jackson 的 @JsonIgnore 和 @JsonBackReference 注释来解决这个问题,但似乎它们被完全忽略了,无限递归仍在发生。
Caused by: com.fasterxml.jackson.databind.JsonMappingException: Infinite recursion (StackOverflowError)
这是我的实体类用户类
//i get that suggestion from some sites
@JsonIgnoreProperties({ "hibernateLazyInitializer", "handler" })
@Entity
@Table(name = "user", catalog = "someSchema")
public class User implements java.io.Serializable {
private String name;
private String password;
private String username;
private Set<Telephone> telephones = new HashSet<Telephone>(0);
@JsonManagedReference
@OneToMany(fetch = FetchType.LAZY, mappedBy = "user")
public Set<Telephone> getTelephones() {
return this.telephones;
}
public void setTelephones(Set<Telephone> telephones) {
this.telephones = telephones;
}
}
Telephone.class
@Entity
@Table(name = "telephone", catalog = "someSchema")
public class Telephone implements java.io.Serializable {
private User user;
private String telephone;
@ManyToOne(fetch = FetchType.LAZY)
//tried @JsonIgnore only and both
@JsonIgnore
//tried @JsonBackReference only and both
@JsonBackReference
@JoinColumn(name = "user_id", nullable = false)
public User getUser() {
return this.user;
}
@JsonIgnore
@JsonBackReference
public void setUser(User user) {
this.user = user;
}
}
关于将 jackson 注册到我的应用程序,我使用了 xml 配置
<mvc:annotation-driven>
<mvc:message-converters>
<bean
class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="objectMapper">
<bean
class="web.jsonConverters.HibernateAwareObjectMapper" />
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
和映射器类
public class HibernateAwareObjectMapper extends ObjectMapper {
public HibernateAwareObjectMapper() {
Hibernate4Module hm = new Hibernate4Module();
registerModule(hm);
}
}
您知道为什么 Jackson 注释被忽略了吗?
任何帮助将不胜感激...
最佳答案
使用
import com.fasterxml.jackson.annotation.JsonBackReference;
代替
import org.codehaus.jackson.annotate.JsonBackReference;
关于JsonIgnore 和 JsonBackReference 被忽略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27688466/
我有来自用户和角色的关系,其中角色具有“一对多”关系,而用户与“role_id”列具有“多对一”关系 当我在 Spring Boot 上使用关系时,当我使用 @OneToMany 和 @ManyToO
我正在使用 spring 4.0.1、hibernate 4.3.5、jackson 1.9.2 和 STS IDE我正在创建一个以 JSON 格式返回数据的 RESTful 网络服务当我使用 Hib
我对 JSON 的了解有限,因此希望您能为我指出正确的方向。 我正在尝试发布一个对象(库),但这会由于无限递归而引发异常 public class Library{ private List
我想知道Jackson中@JsonManagedReference和@JsonBackReference的区别? 最佳答案 @JsonManagedReference is the forward p
我正在使用 RestEasy、Jboss 7 和 EJB 3.1。我正在创建一个以 JSON 格式返回数据的 RESTful Web 服务。 问题是我有一个 @ManyToOne在序列化过程中导致无限
我有两个类: 人.java: @Entity @PrimaryKeyJoinColumn(name="owner_id") public class Person extends Owner {
非常感谢您解释我的问题。 我有 2 个实体和 1 个桥接表实体, 假设他们是团队、用户和团队用户。 团队实体: @Id @GeneratedValue(strategy = Gener
非常感谢您解释我的问题。 我有 2 个实体和 1 个桥接表实体, 假设他们是团队、用户和团队用户。 团队实体: @Id @GeneratedValue(strategy = Gener
回答 我将解决有关此博客的问题 Jackson – Bidirectional Relationships 谢谢你。 更新2 问题与 JsonBackReference 和 JsonManagedRe
在我的 Spring Data Rest 应用程序中,定义 excerptProjection 时,@JsonBackReference 将被忽略。 调用 GET/foos/{id} 时,我得到响应:
我知道@JsonIgnore和@JsonManagedReference,@JsonBackReference都是用来解决无限递归(StackOverflowError)的 code>,这两者有什么区
为了避免无限递归,我使用 @JsonManagedReference 和 @JsonBackReference 。但是在检索结果时,我只能以一种方式获得预期结果。 @ManyToMany(ca
我正在使用 Spring Boot 编写 OneToMany 关系,一个属性可以有多个 propertySale。 这是我的属性类: @Data @Getter @Entity @Table(name
我读过了 http://vard-lokkur.blogspot.com/2010/10/json-jackson-to-rescue.html http://vard-lokkur.blogspot
我是一名优秀的程序员,十分优秀!