json - Jackson 在@ManyToMany 关系中序列化问题

标签 json spring-boot serialization jackson

我有以下情况:

//--class user --
private ....

@OneToMany(targetEntity = UserRoles.class, mappedBy = "iduser", fetch = FetchType.LAZY)
@JsonManagedReference
private List<UserRoles> userRoleList = new ArrayList<>();

@OneToOne(targetEntity = Login.class, cascade = CascadeType.ALL)
@JoinColumn(name = "iduser", referencedColumnName = "iduser")
@JsonManagedReference
private Login login;

@ManyToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@JoinTable(name = "n_gruppi_user", joinColumns = { @JoinColumn(name = "iduser") }, inverseJoinColumns = {
        @JoinColumn(name = "idgruppo") })
@JsonManagedReference
List<Gruppi> groups = new ArrayList();

下一节课
@Entity
@Table(name = "gruppi")
@EntityListeners(AuditingEntityListener.class)

@Data
public class Gruppi implements Serializable {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long idgruppo;
private long iduser;
private String tipo;
private String nome_gruppo;
private String pass_gruppo;
private String email_gruppo;
private String descr_gruppo;
private Timestamp data_creazione;


@ManyToMany(mappedBy = "groups")
@JsonBackReference
List<User> users_group = new ArrayList<>();

当我运行应用程序时,一切正常,我得到
enter image description here
当我序列化我的对象 User 时,jackson 序列化除 users_group 之外的所有内容,那是因为我使用的是 @JsonBackReference。但是如果不使用@JsonBackReference 会出现循环问题。我怎样才能获得users_group 序列化呢??我需要它!

最佳答案

对于这两个类,您应该定义一些 ID属性,我们可以用来识别数据库中的对象。我们可以用它来帮助Jackson在运行时识别实例。您可以删除 @JsonBackReference@JsonManagedReference而是使用 com.fasterxml.jackson.annotation.JsonIdentityInfo注解:

@JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class,
        property = "iduser")
class User {
...
}


@JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class,
        property = "idgruppo")
class Gruppi {
...
}

关于json - Jackson 在@ManyToMany 关系中序列化问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61392551/

相关文章:

c# - 通过 C# 将 JSON 数据 POST 到 PHP 并将值存储在 MYSQL 中

php - jQgrid 中使用 Php 页面返回的 JSON 数据自动完成

java - 如何忽略 GET 请求的 @OneToMany 关系?

java - Spring Boot 多模块 Gradle 构建 - 多个 "Fat Jars"

python - 覆盖Django RestFramework CreateModelMixin序列化器错误消息

java - Felix OSGi 容器内的 Spring Rest Json 服务

javascript - XMLHttpRequest 响应类型和 JSON

asp.net-mvc - ScriptIgnore 属性不适用于部分类

java - hibernate 使用 apache-poi 在外键字段中插入空值

java - 使用 Gson 自定义 Json 序列化