java - hibernate 的问题 - 持久上下文

标签 java hibernate orm jpa

我有类似 PersonAddress 对象(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/

相关文章:

java - 什么是NullPointerException,我该如何解决?

java - HQL 意外的 AST 节点 : {vector}

java - Hibernate 实体类映射不起作用

java - 使用 JPA 和 Spring 加载选定的 Hibernate 实体

php - Symfony2 Doctrine2 - 根据原则 :mapping:import 从现有数据库生成一对多注释

php - CakePHP 3 连接表关联

MySQL 的 Java JDBC 数据源部署

java - 这个 if 语句可以简化吗?

java - 如何在 Java 中比较字符串?

java - 使用 HQL Select 的 Hibernate 和 JAX-RS 响应