all*_*cer 5 java hibernate relationship
我有一个与同一Parcel类有2个关系,但对象不同的实体:
@Entity
public class Parcel implements Serializable
{
@Id
@GeneratedValue
@Column
private Long id;
@OneToOne( mappedBy = "parcelSender", cascade = CascadeType.ALL, fetch = FetchType.EAGER)
private Place sender;
@OneToOne( mappedBy = "parcelRecipient", cascade = CascadeType.ALL, fetch = FetchType.EAGER )
private Place recipient;
//getters, setters, etc.
}
Run Code Online (Sandbox Code Playgroud)
Place 实体:
@Entity
public class Place implements Serializable
{
@Id
@GeneratedValue
@Column
private Long id;
@OneToOne
@PrimaryKeyJoinColumn
private Parcel parcelSender;
@OneToOne
@PrimaryKeyJoinColumn
private Parcel parcelRecipient;
//getters, setters
}
Run Code Online (Sandbox Code Playgroud)
如果看到的话,我@OneToOne与Place对象有2个关系。一切工作几乎都很好-当我使用REST持久化对象时,我得到了发件人和收件人正确的JSON响应。当我想要补丁Parcels对象时,我得到JSON响应,其中发件人和收件人指向相同的数据。例如,我坚持对象:
{
"sender":{
"name": "John",
"email":"othermail@mail.com"
},
"recipient":{
"name": "Mike",
"email":"mymail@mail.com",
}
}
Run Code Online (Sandbox Code Playgroud)
我得到持久化数据的响应:
{
"id": 1,
"sender": {
"id": 4,
"name": "John",
"email": "othermail@mail.com"
},
"recipient": {
"id": 3,
"name": "Mike",
"email": "mymail@mail.com"
}
}
Run Code Online (Sandbox Code Playgroud)
现在,当我想修补Parcel实体中的某些字段时,在JSON reposne中有相同的对象:
我进行了修补(这是包裹编号上方):
{
"id": 1
//some not important data
}
Run Code Online (Sandbox Code Playgroud)
并回应:
{
"id": 3,
"sender": {
"id": 3,
"name": "Mike",
"email": "mymail@mail.com"
},
"recipient": {
"id": 3,
"name": "Mike",
"email": "mymail@mail.com"
}
}
Run Code Online (Sandbox Code Playgroud)
这个问题可能很容易,但是我不知道如何解决。我真的不明白为什么我得到相同的对象,即使它们mappedBy的实体不同。我需要对@OneToOne相同的类但对不同的对象有两个关系。是否可以巧妙地解决此问题?
| 归档时间: |
|
| 查看次数: |
609 次 |
| 最近记录: |