我有Person
和Address
对象(Person
有Address
和其他属性)。
我在一个请求中更新Address
或其他属性。在另一个请求中,我正在搜索所有人。但有时我可以看到属性被修改,有时我不能。
只是提出另一个请求将返回修改或未修改的属性。
哪里出错了。我试图在任何地方冲洗,承诺,但没有任何成功。有什么想法吗?
我的映射:
@Entity
@Table(schema="zet",name="phone_number")
public class PhoneNumber {
private String id;
private String number;
private Person person;
private int status;
......
public int getStatus() {
return status;
}
public void setStatus(int status) {
this.status = status;
}
public void setPerson(Person person) {
this.person = person;
}
@OneToOne(cascade= { CascadeType.PERSIST, CascadeType.MERGE,
CascadeType.REFRESH })
@JoinColumn(name="person_id")
public Person getPerson() {
return person;
}
public void setNumber(String number) {
this.number = number;
}
@Column(name="num",unique=true,nullable=false)
public String getNumber() {
return number;
}
public void setId(String id) {
this.id = id;
}
@Id
@Column(name = "id", nullable = false)
public String getId() {
return id;
}
}
答案 0 :(得分:0)
这看起来像是一个交易问题。您是否使用Spring作为事务管理器?
要确保更改保持不变,请使用:
@Transactional(readOnly = false)
public void persistMyChange(Bean myBean) {
myBeanDao.save(myBean);
}
默认情况下,Transactional的readOnly为false,但您的服务层可能包含在Transactional中,readOnly为true。
答案 1 :(得分:0)
哦,我明白了,非常感谢你(Petr Kozelek)的帮助,非常感谢。有不同数据库的会话缓存,不同的连接提供程序。不同的会议终于结束了。