2015-07-11 5 views
0

У меня проблема с Envers. Во-первых, здесь мои два Hibernate классы:Включает добавление информации пользователя

child.java:

@Entity 
@Audited 
public class child { 
    @Id 
    private int id; 
    private String text; 
    @ManyToOne 
    @JoinColumn(name="child") 
    private testclass parent; 
    public int getId() {return id;} 
    public void setId(int id) {this.id = id;} 
    public String getText() {return text;} 
    public void setText(String text) {this.text = text;} 
    public testclass getParent() {return parent;} 
    public void setParent(testclass parent) {this.parent = parent;} 
} 

testclass.java:

@Entity 
@Audited 
public class testclass { 
    @Id 
    @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="seq_template") 
    @SequenceGenerator(name="seq_template", sequenceName="tester_seq") 
    private int id; 

    private String text; 

    @OneToMany(mappedBy="parent") 
    private Set<child> childs; 

    public int getId() {return id;} 
    public void setId(int id) {this.id = id;} 
    public String getText() {return text;} 
    public void setText(String text) {this.text = text;} 
    public Set<child> getChilds() {return childs;} 
    public void setChilds(Set<child> childs) {this.childs = childs;} 
} 

Оба класса работают отлично, и информация аудита, как метка времени хранится Что ж.

Я хочу распространить сейчас информацию с именем пользователя аудита. Для этого я создал этот конфигурационный файл:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> 
<hibernate-mapping package="ch.triwdata.envers.extensions"> 
    <class name="ExtendedRevisionEntity" table="revinfo"> 
     <id name="id" type="int"> 
      <column name="rev" not-null="true"/> 
      <generator class="native"/> 
     </id> 
     <property name="timestamp" type="long" column="timestamp" /> 
     <property name="username" type="string" not-null="true"/> 
    </class> 
</hibernate-mapping> 

есть, конечно, также файл конфигурация с спящей-конфигурацией, но я не думаю, что это важно.

Может ли кто-нибудь увидеть мой сбой, почему информация о пользователе не сохраняется?

С наилучшими пожеланиями Bjorn

PS: Может быть, это XML не хватает? Я добавил его с начала:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> 
<hibernate-configuration> 
    <session-factory> 
     <property name="hibernate.connection.url">jdbc:postgresql://localhost/postgres</property> 
     <property name="hibernate.connection.username">user</property> 
     <property name="hibernate.connection.driver_class">org.postgresql.Driver</property> 
     <property name="connection.password">****</property> 
     <property name="connection.pool_size">1</property> 
     <property name="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</property> 
     <property name="show_sql">true</property> 
     <property name="hbm2ddl.auto">create-drop</property> 

     <mapping class="testclass"/> 
     <mapping class="child"/> 
    </session-factory> 
</hibernate-configuration> 
+0

вы получаете любое исключение или что-то, вы можете разместить здесь? – Amogh

+0

eclipse говорит, что: ОШИБКА: 3:60 Должен быть объявлен тип элемента «hibernate-mapping». ОШИБКА: 4:55 Должен быть объявлен тип элемента «класс». ОШИБКА: 5:34 Должен быть объявлен тип элемента "id". ОШИБКА: 6:40 Должен быть объявлен тип элемента "column". ОШИБКА: 7:31 Должен быть объявлен тип генератора «генератор». ОШИБКА: 9:69 Атрибут "type" должен быть объявлен для свойства типа элемента. ОШИБКА: 9:69 Атрибут "column" должен быть объявлен для свойства типа элемента. ОШИБКА: 10:60 Атрибут "type" должен быть объявлен для свойства типа элемента. ОШИБКА: 10:60 Атрибут "not-null" должен быть объявлен для свойства типа элемента. –

+0

Хорошо, эта проблема исправлена ​​... Но таблица не создала столбец с именем пользователя. Он работает без проблем, но не создал имя пользователя столбца. –

ответ

1

Я понял! : D

Провал был здесь:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> 
<hibernate-configuration> 
    <session-factory> 
     <property name="hibernate.connection.url">jdbc:postgresql://localhost/postgres</property> 
     <property name="hibernate.connection.username">twd_genmeta</property> 
<!--   <property name="hibernate.connection.driver_class">com.p6spy.engine.spy.P6SpyDriver</property> --> 
     <property name="hibernate.connection.driver_class">org.postgresql.Driver</property> 
     <property name="connection.password">Deliaa</property> 
     <property name="connection.pool_size">1</property> 
     <property name="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</property> 
     <property name="show_sql">true</property> 
     <property name="hbm2ddl.auto">create-drop</property> 

     <mapping class="ch.triwdata.envers.classes.testclass"/> 
     <mapping class="ch.triwdata.envers.classes.child"/> 
     <mapping resource="hibernate.hbm.xml"/> <---- this entry is missing 
    </session-factory> 
</hibernate-configuration> 

Большое спасибо за Ваш ответ!

С наилучшими пожеланиями Bjorn

+0

Gr8 :) поздравления – Amogh

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