我在Spring Data JPA应用程序中发现了一个奇怪的问题。我不知道为什么,但是当我获取具有@ManyToOne
实体的记录时,它仅在响应中返回其实例一次,然后仅返回String表示。以下是实体和回应:
实体
@Entity
@Table(name = "app_survey")
@JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class, property = "id", scope = Survey.class)
public class Survey {
@Id
@Column(name = "id", unique = true)
private String id;
@ManyToOne
@JoinColumn(name = "survey_type", nullable = false)
private SurveyType surveyType;
//.... Getters & Setters
}
@Entity
@Table(name = "app_survey_type")
@JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class, property = "name", scope = SurveyType.class)
public class SurveyType {
@Id
@Column(name = "name", unique = true)
private String name;
@Column(name = "description")
private String description;
//.... Getters & Setters
}
以下是获取Survey
时的JSON响应。
"surveyType": {
"name": "SF",
"description": "Some description here"
},
然后:
"surveyType": "SF",
如果调查回复中有多个surveyType
实例。为什么它在第一次尝试后表示为String而不是对象?
答案 0 :(得分:0)
我猜这是使用@JsonIdentityInfo
的结果。
通过使用该注释,您告诉它响应应该包含一个完全序列化的实例,然后返回引用该完全序列化实例的ID。