1

http://community.jboss.org/message/580407#580407のような同様の問題をいくつか調べましたが、まだ解決策が見つかりません。

アクティビティには多くのオカレンスがあり、オカレンスが作成されると、activity_occurence_AUD テーブルが 0 (作成) リビジョンで正しく更新されます。

ただし、オカレンスが削除されると、activity_occurence_AUD テーブルに 2 (削除) リビジョンが取り込まれません。

活動エンティティ:

@Entity
@Table(name = "activity")
@Audited
public class Activity implements Serializable {
    private static final long serialVersionUID = 1L;

    public static final int[] VALID_PRIORITIES = { 0, 1, 2, 3 };

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "id", nullable = false)
    private Long id;

    @OneToMany(cascade = CascadeType.ALL, mappedBy = "activity")
    private List<ActivityOccurrence> activityOccurrenceList;

....

}

ActivityOccurence Entity:

@Entity
@Table(name = "activity_occurrence")
@Audited    
public class ActivityOccurrence implements Comparable<ActivityOccurrence>, Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "id", nullable = false)
    private Long id;

    @JoinColumn(name = "activity_id", referencedColumnName = "id", nullable = false)
    @ManyToOne(optional = false)
    private Activity activity;

....

}

休止状態のプロパティ:

<entry key="hibernate.ejb.event.post-insert"     
  value="org.hibernate.ejb.event.EJB3PostInsertEventListener,org.hibernate.envers.event.AuditEventListener" />
<entry key="hibernate.ejb.event.post-update"
  value="org.hibernate.ejb.event.EJB3PostUpdateEventListener,org.hibernate.envers.event.AuditEventListener" />
<entry key="hibernate.ejb.event.post-delete"
  value="org.hibernate.ejb.event.EJB3PostDeleteEventListener,org.hibernate.envers.event.AuditEventListener" />
<entry key="hibernate.ejb.event.pre-collection-update"
  value="org.hibernate.envers.event.AuditEventListener" />
<entry key="hibernate.ejb.event.pre-collection-remove"
  value="org.hibernate.envers.event.AuditEventListener" />
<entry key="hibernate.ejb.event.post-collection-recreate" 
  value="org.hibernate.envers.event.AuditEventListener" />

どんな助けでも大歓迎です。

更新が機能するのに削除が機能しないのは奇妙です。

さらに情報を提供できるかどうか教えてください。

4

1 に答える 1

1

ここで古いものを掘り起こしますが、答えはわかっていると思いますが、それは今週末に同じ問題に遭遇したからです。

あなたはやっていますか:

Activity.getActivityOccurrenceList().remove(OCCURRENCE);

または、あなたはやっています:

Activity.setActivityOccurrenceList(NEW_LIST_EXLUDING_REMOVED_OCCURRENCE);

最初のオプションでは REVTYPE が 2 になるはずですが、2 番目のオプションではおそらく REVTYPE が 0 になります。

もちろん、私の例はManyToManyで結合テーブルがあるため、間違っている可能性がありますが、私のいじくり回しから、これが機能していると思います。

私の場合ですが、あなたの例を使用してください。春は活動の出現のリストを入札しており、春はこれを行うたびに新しいリストを作成し、実際に出現を削除したにもかかわらず、REVTYPE が 0 (ADD) になります。

最終的にこれに対する解決策を自分で見つけましたか? もしそうなら、あなたは共有できますか?

于 2011-12-11T22:50:48.327 に答える