获取@ManyToOne实体多个返回String表示,为什么?

时间:2014-10-06 08:19:01

标签: java spring hibernate spring-data-jpa

我在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而不是对象?

1 个答案:

答案 0 :(得分:0)

我猜这是使用@JsonIdentityInfo的结果。

通过使用该注释,您告诉它响应应该包含一个完全序列化的实例,然后返回引用该完全序列化实例的ID。