我有一个用户实体:
@Entity(name = "users")
@DynamicUpdate
public class User implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@OneToMany(mappedBy = "user", cascade = CascadeType.ALL)
@JsonIgnore
@JsonIgnoreProperties("user")
private Set<Car> cars;
}
和汽车实体:
@Entity(name = "cars")
@DynamicUpdate
public class Car implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@Column(name = "plate_number")
@JsonView(View.Summary.class)
private String plateNumber;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name="user_id")
@JsonIgnore
@JsonManagedReference("user-coordinate")
@Access(value = AccessType.FIELD)
private User user;
}
当我得到汽车清单时,我得到这个:
{
"id": 5,
"plateNumber": "aaaaada",
"user": {
"id": 110,
"name": null
}
},
但是我想得到这个(没有用户实体!):
{
"id": 5,
"plateNumber": "aaaaada",
},
我在PHP方面有7年的经验(我知道我很熟悉如何搜索并获得所需的东西),但是我是java spring的初学者,我为寻找答案得到了很多东西,就是它与杰克逊(Jackson)有关,但我不知道如何解决它,请提供详细信息给我,我将不胜感激。
谢谢
答案 0 :(得分:1)
您正在使用@JsonManagedReference(“ user-coordinate”)覆盖@JsonIgnore
JsonManagedReference指示Jackson在对汽车进行序列化时对用户进行序列化,因此,如果您不希望对用户进行序列化,则需要将其删除,以便进行@JsonIgnore
答案 1 :(得分:0)
对于有两个问题的人,我使用的JsonIgnore有两个依赖项:
org.codehaus.jackson.annotate
那是我将其更改为的问题:
com.fasterxml.jackson.annotation
问题解决了