1

私の顧客エンティティに、changedByUserIdフィールドを保存したいと思います。このフィールドを設定したいのは、顧客の他のフィールドの1つが実際に変更された場合のみです。常に設定すると、changedByUserIdフィールドを設定したため、EntityManagerにcustomerテーブルを更新させます。

@Entity
@Table....
public class Customer {
    @Id
    private Long cusID;
    @Column
    private String cusNAME;
    @Column
    private Date changed;
    @Column
    private Long changedByUserId;

    @PreUpdate
    private preUpdate() {
        changed = new Date();
        // cannot set changedbyUserId here because no entitymanager 
        // available where i can query the id
    }
}

誰かがEntityManagerにchangedByUserIDフィールドの変更をチェックしないように指示する方法を知っていますか?

4

1 に答える 1

1

エンティティが変更されたかどうかに関係なく、常にユーザーIDに設定する一時的な一時的なフィールドを作成できます。

@Transient
private Long tempUserId;
@Column
private Long changedByUserId;

@PreUpdate
private preUpdate() {
    changed = new Date();
    changedByUserId = tempUserId;
}

これはエンティティマネージャ@PreUpdateであり、永続フィールドの1つが実際に変更された場合にのみ実行されます。

于 2012-11-06T21:24:08.740 に答える