- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有两个对象:UserEntity 和 ApartmentEntity,它们以 OneToMany 方式关联(一个用户可以拥有多个公寓)。我在使用无限递归将其序列化为 JSON 时遇到问题(我使用 @JsonManagedReference 和 @JsonBackReference: Infinite Recursion with Jackson JSON and Hibernate JPA issue 解决了它),但现在我无法从 Apartments 表中读取 user_id (我需要知道哪个用户拥有当前公寓)。
公寓实体:
@Entity
@Table(name = "users")
@Scope("session")
public class UserEntity {
@Id
@Column(name = "user_id")
@GeneratedValue
public int user_id;
//other fields ...
@JsonManagedReference
@OneToMany(mappedBy="user", cascade = { CascadeType.MERGE }, fetch=FetchType.EAGER)
private List<ApartmentEntity> apartments;
//getters setters ...
}
公寓实体
@Entity
@Table(name = "apartments")
public class ApartmentEntity {
@Id
@Column(name = "id")
@GeneratedValue
private int id;
// ...
@JsonBackReference
@ManyToOne
@JoinColumn(name="user_id")
private UserEntity user;
//getters, setters ...
}
现在返回的 JSON 在 Apartment 属性中没有 user_id。
如何解决这个问题?如何使用 @Json 注释读取某些属性。我被困在这里了。
最佳答案
JsonManagedReference、JsonBackReference 以一种方式工作。因此 UserEntity JSON 包含 ApartmentEntities,但 ApartmentEntity 不会包含 UserEntity。
Jackson 提供了更好的机制来避免循环引用:
http://wiki.fasterxml.com/JacksonFeatureObjectIdentity
由于您已经有一个使用 JPA 的 id 字段,我建议在实体类上使用 PropertyGenerator:
@JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class,property = "user_id",scope = UserEntity.class)
@JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class,property = "id",scope = ApartmentEntity.class)
关于java - 如何使用 JsonManagedReference 从相关对象读取属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27668427/
我正在尝试找到一种根据我从关联存储库引用的实体来交换 @JsonBackRefence 和 @JsonManagedReference 的方法。 Site.java @Entity @Table(na
我有两个对象:UserEntity 和 ApartmentEntity,它们以 OneToMany 方式关联(一个用户可以拥有多个公寓)。我在使用无限递归将其序列化为 JSON 时遇到问题(我使用 @
我想知道Jackson中@JsonManagedReference和@JsonBackReference的区别? 最佳答案 @JsonManagedReference is the forward p
我正在尝试保留一个具有内部列表的对象。我必须用 @JsonManagedReference 注释实体 Item和 ItemProperty 与 @JsonBackReference,以避免无限循环 -
我正在将 Mysql 与 Java Spring Boot 应用程序和 JPA 一起使用。我在两个表(bean)之间有一对一的关系,如下所示: @JsonManagedReference @OneTo
非常感谢您解释我的问题。 我有 2 个实体和 1 个桥接表实体, 假设他们是团队、用户和团队用户。 团队实体: @Id @GeneratedValue(strategy = Gener
非常感谢您解释我的问题。 我有 2 个实体和 1 个桥接表实体, 假设他们是团队、用户和团队用户。 团队实体: @Id @GeneratedValue(strategy = Gener
回答 我将解决有关此博客的问题 Jackson – Bidirectional Relationships 谢谢你。 更新2 问题与 JsonBackReference 和 JsonManagedRe
我知道@JsonIgnore和@JsonManagedReference,@JsonBackReference都是用来解决无限递归(StackOverflowError)的 code>,这两者有什么区
我有来自用户和角色的关系,其中角色具有“一对多”关系,而用户与“role_id”列具有“多对一”关系 当我在 Spring Boot 上使用关系时,当我使用 @OneToMany 和 @ManyToO
为了避免无限递归,我使用 @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
我是一名优秀的程序员,十分优秀!