修改集合会使实体变脏

时间:2012-05-24 09:55:48

标签: java hibernate jpa

我有一个实体定义如下

@Entity(name = "Report")
@Table(name = "REPORTS")
@org.hibernate.annotations.Entity(dynamicInsert = true, dynamicUpdate = true, selectBeforeUpdate = true)
public class Report implements java.io.Serializable        {

    /* other fields, getters and setters*/
    @Column(name = "UPD_TIMESTAMP")
    @Version
    private Long updTimestamp;

    @OneToMany(mappedBy = "report", fetch = FetchType.LAZY)
    private Collection<ReportItem> reportItems = new ArrayList<ReportItem>();

    public Collection<ReportItem> getReportItems() {
       return reportItems;
    }

    public void setReportItems(Collection<ReportItems> reportItems) {
       this.reportItems = reportItems;
    }
}

问题在于,当我在reportItems中修改某些内容时,报表实体变得很脏,并且总是有一个更新只会增加版本字段。

我知道@OptimisticLock(excluded = true),但我坚持使用Hibernate 3.2.0 GA并且这个注释不可用。 我可以使用Hibernate 3.20 GA 来解决此功能吗?

1 个答案:

答案 0 :(得分:1)

看一下inverse关键字,也许这可以提供一个解决方案。 Here解释了这一点。

编辑:原来这是预期的行为。 See this question