テーブルの列で行われた変更の更新を取得するためにプレーンJavaを使用してHibernate Enversでスタンドアロンアプリケーションを休止しています。エンバーでここでHibernate enversはREVINFOの手動で追加された列を注釈付きで更新しません
は私の "CustomRevisionEntity.java"
@Entity
@AuditTable("REVINFO")
@RevisionEntity(CustomRevisionListener.class)
public class CustomRevisionEntity {
@Column (name = "USERNAME", length = 50)
private String username;
@Id
@GeneratedValue
@RevisionNumber
@Column (name = "REV", unique = true, nullable = false)
private int id;
@Temporal(TemporalType.DATE)
@Column (name = "REVTSTMP", nullable = false, length = 15)
@RevisionTimestamp
private Date timestamp;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public Date getTimestamp() {
return timestamp;
}
public void setTimestamp(Date timestamp) {
this.timestamp = timestamp;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
}
あるCustomRevisionListener.java
public class CustomRevisionListener implements RevisionListener {
public void newRevision(Object revisionEntity) {
CustomRevisionEntity revision = (CustomRevisionEntity) revisionEntity ;
String userName = Hibernate_Connection.getloggedUser();
revision.setUsername(userName);
}
}
hibernate.cfg.xmlの
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">com.microsoft.sqlserver.jdbc.SQLServerDriver</property>
<property name="hibernate.connection.url">jdbc:sqlserver://localhost:1433;instance=SQLEXPRESS_2012;DatabaseName=ETS_V11_DEV;integratedSecurity=true</property> -->
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> -->
<property name="show_sql">true</property>
<property name="use_sql_comments">true</property>
<property name="hbm2ddl.auto">update</property>
<mapping class= "Domain_hibernate_SQLServer.Domain"/>
<mapping class= "Domain_hibernate_SQLServer.CustomRevisionEntity"/>
</session-factory>
</hibernate-configuration>
問題:その後のhbm.xmlファイルを使用しながら、ユーザー名列に値を追加していますが、 ですが、gのAnnotationを使用しています私が追加した追加の列プロパティを認識していないので、時間がnull値を取っていますが、 注釈を使用しているときに、そのnull値をユーザー名列に挿入しています。
SQLコードを見て、コンソール上
/* insert org.hibernate.envers.DefaultRevisionEntity
*/ insert
into
REVINFO
(REVTSTMP)
values
(?)
表のみが3列、1がREVである、つまり、自動インクリメントを持っているあなたは、より多くの情報が必要な場合は、私が行方不明です何を、第二はREVTSTMPあり、ndは第三はUSERNAMEであり、そのユーザ名を取っていない、 コメントしてください
固定、愚かな間違い、cfg.xmlに問題がありました。DOCTYPE –