簡體   English   中英

Hibernate OneToMany和ManyToOne映射錯誤

[英]Hibernate OneToMany and ManyToOne error in mapping

我有一個名為User的實體,具有以下字段:

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

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

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

@OneToMany(mappedBy="userId")   
private List<Survey> survey= new ArrayList<>();

擁有以下內容的調查實體:

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "SURVEY_ID")
private Long Id;

@ManyToOne
@JoinColumn(name = "user_id",referencedColumnName="user_id")
private User userId;
.....

我希望一個用戶擁有多個調查,並且每個調查都與一個用戶相關。 但是當我訪問allUsers時,我映射它的方式有問題,因為cuz作為JSON文件,我得到了:

[{"id":1,"name":"User","lastName":"user","email":"user@user.com","surveyData":[{"userId":{"id":1,"name":"User","lastName":"user","email":"user@user.com","surveyData": ,...... and repeats itself

因此,我不是獲取調查數據的值作為列表,而是獲取Users信息的值? 有人可以幫我弄這個嗎 ?

您的映射是正確的。

只需在User類中使用@JsonManagedReference ,在Survey類中使用@JsonManagedReference @JsonBackReference @JsonManagedReference是引用的前一部分-可以正常序列化的部分。 @JsonBackReference是參考的后半部分–序列化將省略它。

在用戶類別中:

@OneToMany(mappedBy="userId")
@JsonManagedReference  
private List<Survey> survey;

在調查類中:

@ManyToOne
@JoinColumn(name = "user_id",referencedColumnName="user_id")
@JsonBackReference
private User userId;

我有2句話:

  • 如果沒有訂購調查,則可以考慮使用“集合”而不是“列表”。
  • 我還建議將Survey類中的類變量userId重命名為user ,因為它是一個User對象,沒有標識符。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM