2017-01-04 15 views
0

テーブルの列で行われた変更の更新を取得するためにプレーン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であり、そのユーザ名を取っていない、 コメントしてください

+0

固定、愚かな間違い、cfg.xmlに問題がありました。DOCTYPE –

答えて

0

私は問題がyから来ると思います私たちの注釈設定はあなたのhbm.xmlファイルとアノテーション設定に使われるクラスを投稿できますか?

+0

vvsをrplyingしていただきありがとうございます。私は上記のコードで "hibernate.cfg.xml"ファイルを追加しました。 Annotationを使用していますが、 "hbm.xml"ファイルを作成する必要はありません。このファイルに問題はありますか? –

関連する問題