gpt4 book ai didi

java - JsonIdentityInfo 用于 hibernate 映射

转载 作者:行者123 更新时间:2023-11-30 07:48:21 25 4
gpt4 key购买 nike

我有两个实体“城市”和“类型”,并且这两个实体之间存在多对多关系。我需要的是:

  1. 包含类型的 City json
  2. 包含城市的 Type json。

我正在使用 JsonIdentityInfo 来停止映射的无限递归,但是我从 JSON 中得到的并没有真正帮助我。这是我目前从城市 JSON 得到的

0:  {
@idType: 1
id: 1
name: "destination"
cities: [2]
- 0: {
@idCity: 2
id: 3
name: "Zalau"
description: "City...."
types: [2] <---- I don't need this because I'm already in types JSON
- 0: {
@idType: 3
id: 2
name: "other type"
cities: [1]
- 0: 2

}
- 1: 1 <----- end of don't need
}

- 1: {
@idCity: 4
id: 0
name: "Cluj"
description: "City2..."
types: [1] <---- don't need
- 0: 1

}

}
1: 3 <----- I want to be the Type with id 3 although it was already generated from a city

但是我需要的是这样的:

0:  {
@idType: 1
id: 1
name: "destination"
cities: [2]
- 0: {
@idCity: 2
id: 3
name: "Zalau"
description: "City...."
}

- 1: {
@idCity: 4
id: 0
name: "Cluj"
description: "City2..."
}

}
1: {
@idType: 3
id: 2
name: "other type"
cities: [1]
- 0: {
@idCity: 2
id: 3
name: "Zalau"
description: "City...."
}
}

Cities JSON 也是如此。我需要它是双向的。

这是我的实体的代码:

城市:

@Entity
@Table(name = "City")
@XmlRootElement
@JsonIdentityInfo(generator = ObjectIdGenerators.IntSequenceGenerator.class, property = "@idCity")

public class City {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "idCity")
private int id;

@Column(name = "name")
private String name;

@Column(name = "description")
private String description;

@ManyToMany(fetch = FetchType.EAGER)
@JoinTable(name = "CityType", joinColumns = { @JoinColumn(name = "idCity") }, inverseJoinColumns = {
@JoinColumn(name = "idType") })
private Set<Type> types = new HashSet<Type>();

.... getters and setters
}

类型:

@Entity
@Table(name = "Type")
@XmlRootElement
@JsonIdentityInfo(generator = ObjectIdGenerators.IntSequenceGenerator.class, property = "@idType")
public class Type {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "idType")
private int id;

@Column(name = "name")
private String name;

@ManyToMany(fetch = FetchType.EAGER, mappedBy = "types")
private Set<City> cities = new HashSet<City>();

.... getters and setters
}

最佳答案

更改线路

@JsonIdentityInfo(generator = ObjectIdGenerators.IntSequenceGenerator.class, property = "@idType")
to
@JsonIdentityInfo(generator = ObjectIdGenerators.IntSequenceGenerator.class, property = "id")

在两个类上。

关于java - JsonIdentityInfo 用于 hibernate 映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33610425/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com