我有类似 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;
}
}
最佳答案
这看起来像是一个交易问题。您使用 Spring 作为事务管理器吗?
要确保更改持续存在,请使用:
@Transactional(readOnly = false)
public void persistMyChange(Bean myBean) {
myBeanDao.save(myBean);
}
默认情况下,Transactional 的 readOnly 为 false,但您的服务层可能会包装在 readOnly 为 true 的 Transactional 中。
关于java - hibernate 的问题 - 持久上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3584300/