2

私は次のように定義されたエンティティを持っています

@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で何かを変更すると、Reportエンティティがダーティになり、バージョンフィールドのみをインクリメントする更新が常に存在することです。

@OptimisticLock(excluded = true)に隣接していることは知っていますが、Hibernate 3.2.0 GAに固執しており、このアノテーションは使用できません。Hibernate 3.20 GAで使用できるこの機能の回避策はありますか?

4

1 に答える 1

1

inverse キーワードを見てください。これで解決できるかもしれません。ここで説明します。

編集:これは予想される動作であることが判明しました。この質問を参照してください

于 2012-06-09T09:51:48.010 に答える