JPAの監査と@Embedded
のメンバーに問題があります。 I監査とJPA @Entity
を定義Springデータの監査と@埋め込みJPA
CREATE TABLE AUDIT_TEST (
ID NUMBER(38) NOT NULL PRIMARY KEY,
CREATION_DATE TIMESTAMP(6) DEFAULT SYSTIMESTAMP NOT NULL
);
:私は、Oracle DBにテストテーブルを設定
次の例のシナリオを考える最後
@Entity
@EntityListeners(AuditingEntityListener.class)
@Table(name = "AUDIT_TEST")
public class AuditTest {
private Long id;
private LocalDateTime creationDate;
@Id
@Column(name = "ID")
public Long getId() { return id; }
public void setId(Long id) { this.id = id; }
@CreatedDate
@Column(name = "CREATION_DATE")
public LocalDateTime getCreationDate() { return creationDate; }
public void setCreationDate(LocalDateTime creationDate) {
this.creationDate = creationDate;
}
}
、IはJPA監査での有効私の@Configuration
:
@SpringBootApplication()
@EnableJpaAuditing()
public class AuditTestApplication {
}
これまでのところとても良い; AuditTest
インスタンスを構築し、それにIDを割り当て、コミットすると、creationDate
カラムには、現在のタイムスタンプが期待通りに取り込まれます。
私は@Embeddable
で監査列をカプセル化する場合しかし、物事は動作を停止:
@Embeddable
public class AuditTestEmbeddable {
private LocalDateTime creationDate;
@CreatedDate
@Column(name = "CREATION_DATE")
public LocalDateTime getCreationDate() { return creationDate; }
public void setCreationDate(LocalDateTime creationDate) {
this.creationDate = creationDate;
}
}
それから私は、作成日を埋め込むために私のエンティティクラスを変更します。
@Entity
@EntityListeners(AuditingEntityListener.class)
@Table(name = "AUDIT_TEST")
public class AuditTest {
private Long id;
private AuditTestEmbeddable auditTestEmbeddable = new AuditTestEmbeddable();
@Id
@Column(name = "ID")
public Long getId() { return id; }
public void setId(Long id) { this.id = id; }
@Embedded
public AuditTestEmbeddable getAuditTestEmbeddable() {
return auditTestEmbeddable;
}
public void setAuditTestEmbeddable(AuditTestEmbeddable auditTestEmbeddable) {
this.auditTestEmbeddable = auditTestEmbeddable;
}
}
そして残念ながら、監査をもはや働いていません。
@Embedded
クラスをまだ使用しているうちに、監査機能を保存する方法を知っている人はいますか?
情報は、(少なくとも、それはそれがどのように行われるかで、動作するようになりました)管理エンティティでなければなりません。したがって、現在、エンティティに直接追加する方法はありません。 –
こんにちは、唯一利用可能なオプションは、すべてのエンティティに、次のような必要なフィールドを直接追加することです:User creator、User updater、Date creationDate、Date updateDate?それが正しいか? – Paolo