2017-01-04 1 views
0

Я использую простой java для спящего автономного приложения с Hibernate Envers для получения обновлений изменений, внесенных в столбцы таблицы, я использую sql-сервер в качестве моей базы данных, и я новичок в настоящее время.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 что время принимает нулевое значение, поскольку оно не распознает дополнительное свойство столбца, которое я добавил, но При использовании аннотации его вставка нулевых значений в столбцах имени пользователя

Он принимает значения, подобные этому, с аннотацией при просмотре кода sql на консоли

/* insert org.hibernate.envers.DefaultRevisionEntity 
    */ insert 
    into 
     REVINFO 
     (REVTSTMP) 
    values 
     (?) 

Таблица имеет только три колонки, 1 является REV, т.е. автоинкремент, второй является REVTSTMP, й третий является USERNAME, и его не принимает имя пользователя, Что мне не хватает, если вам нужна дополнительная информация, то пожалуйста, напишите комментарий

+0

исправлено, Silly Mistake, у меня была проблема с cfg.xml DOCTYPE –

ответ

0

Я думаю, проблема связана с y наш аннотационный конфиг, поэтому вы можете опубликовать свой файл hbm.xml и класс, используемый для конфигурации анотации?

+0

Поблагодарили u для rplying vvs. Я добавил файл «hibernate.cfg.xml» в приведенном выше коде. И хотя я использую Annotation, поэтому не нужно создавать файл «hbm.xml». Есть ли проблема в этом файле –

Смежные вопросы