hibernate的问题 - 持久化上下文

时间:2010-08-27 12:53:12

标签: java hibernate orm jpa

我有PersonAddress对象(PersonAddress和其他属性)。

我在一个请求中更新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;
    }
}

2 个答案:

答案 0 :(得分:0)

这看起来像是一个交易问题。您是否使用Spring作为事务管理器?

要确保更改保持不变,请使用:

  @Transactional(readOnly = false)
  public void persistMyChange(Bean myBean) {
     myBeanDao.save(myBean);
  }

默认情况下,Transactional的readOnly为false,但您的服务层可能包含在Transactional中,readOnly为true。

答案 1 :(得分:0)

哦,我明白了,非常感谢你(Petr Kozelek)的帮助,非常感谢。有不同数据库的会话缓存,不同的连接提供程序。不同的会议终于结束了。