Note that there are some explanatory texts on larger screens.

plurals
  1. POHibernate Envers dont create revisions
    primarykey
    data
    text
    <p>I have a problem with hibernate envers. I added the eventlisteners and I added the @Audited Annotation, but when I change the name (or anything else) there are no revisions in the database created. I hope you can help me. </p> <p>This is the Main class where I build the session etc.</p> <pre><code>import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; import org.hibernate.service.ServiceRegistry; import org.hibernate.service.ServiceRegistryBuilder; public class Main { public static void main(String[] args) { new Main(); } public Main() { Configuration configuration = new Configuration().configure(); ServiceRegistryBuilder registry = new ServiceRegistryBuilder(); registry.applySettings(configuration.getProperties()); ServiceRegistry serviceRegistry = registry.buildServiceRegistry(); SessionFactory sessionFactory = configuration .buildSessionFactory(serviceRegistry); Session session = sessionFactory.openSession(); Address address1 = new Address(); address1.setStreetName("Privet Drive"); address1.setHouseNumber(4); Person person1 = new Person(); person1.setName("Hi"); person1.setSurname("test"); person1.setAddress(address1); session.beginTransaction(); session.persist(person1); session.persist(address1); session.getTransaction().commit(); person1.setName("Hans"); session.beginTransaction(); session.persist(person1); session.persist(address1); session.getTransaction().commit(); session.close(); } } </code></pre> <p>Here the Person class: </p> <pre><code>package Main; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.ManyToOne; import javax.persistence.Table; import org.hibernate.envers.Audited; import org.hibernate.envers.RevisionEntity; import org.hibernate.envers.RevisionNumber; import org.hibernate.envers.RevisionTimestamp; @Entity @Table(name="PERSON") @Audited public class Person{ @Id @GeneratedValue @RevisionNumber private int id; private String name; private String surname; private String username; @ManyToOne private Address address; public int getId() { return id; } public String getName() { return name; } public String getSurname() { return surname; } public Address getAddress() { return address; } public void setId(int id) { this.id = id; } public void setName(String name) { this.name = name; } public void setSurname(String surname) { this.surname = surname; } public void setAddress(Address address) { this.address = address; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } } </code></pre> <p>The adress:</p> <pre><code>package Main; import java.util.Set; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.OneToMany; import javax.persistence.Table; import org.hibernate.envers.Audited; @Entity @Table(name="ADDRESS") @Audited public class Address { @Id @GeneratedValue private int id; private String streetName; private Integer houseNumber; private Integer flatNumber; @OneToMany(mappedBy = "address") private Set&lt;Person&gt; persons; public int getId() { return id; } public String getStreetName() { return streetName; } public Integer getHouseNumber() { return houseNumber; } public Integer getFlatNumber() { return flatNumber; } public Set&lt;Person&gt; getPersons() { return persons; } public void setId(int id) { this.id = id; } public void setStreetName(String streetName) { this.streetName = streetName; } public void setHouseNumber(Integer houseNumber) { this.houseNumber = houseNumber; } public void setFlatNumber(Integer flatNumber) { this.flatNumber = flatNumber; } public void setPersons(Set&lt;Person&gt; persons) { this.persons = persons; } } </code></pre> <p>And my hibernate.cfg.xml: </p> <pre><code>&lt;?xml version='1.0' encoding='utf-8'?&gt; &lt;!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"&gt; &lt;hibernate-configuration&gt; &lt;session-factory&gt; &lt;property name="hibernate.connection.driver_class"&gt;com.mysql.jdbc.Driver&lt;/property&gt; &lt;property name="hibernate.connection.url"&gt; jdbc:mysql://localhost:3306/hwdb2&lt;/property&gt; &lt;property name="hibernate.connection.username"&gt;root&lt;/property&gt; &lt;property name="hibernate.connection.password"&gt;&lt;/property&gt; &lt;property name="show_sql"&gt;true&lt;/property&gt; &lt;property name="format_sql"&gt;true&lt;/property&gt; &lt;property name="dialect"&gt;org.hibernate.dialect.MySQLDialect&lt;/property&gt; &lt;property name="hbm2ddl.auto"&gt;create&lt;/property&gt; &lt;property name="hibernate.ejb.event.post-insert"&gt;org.hibernate.ejb.event.EJB3PostInsertEventListener,org.hibernate.envers.event.AuditEventListener&lt;/property&gt; &lt;property name="hibernate.ejb.event.post-update"&gt;org.hibernate.ejb.event.EJB3PostUpdateEventListener,org.hibernate.envers.event.AuditEventListener&lt;/property&gt; &lt;property name="hibernate.ejb.event.post-delete"&gt;org.hibernate.ejb.event.EJB3PostDeleteEventListener,org.hibernate.envers.event.AuditEventListener&lt;/property&gt; &lt;property name="hibernate.ejb.event.pre-collection-update"&gt;org.hibernate.envers.event.AuditEventListener&lt;/property&gt; &lt;property name="hibernate.ejb.event.pre-collection-remove"&gt;org.hibernate.envers.event.AuditEventListener&lt;/property&gt; &lt;property name="hibernate.ejb.event.post-collection-recreate"&gt;org.hibernate.envers.event.AuditEventListener&lt;/property&gt; &lt;!-- Mapping files --&gt; &lt;mapping class="Main.Person" /&gt; &lt;mapping class="Main.Address" /&gt; &lt;mapping class="Main.ExampleListener" /&gt; &lt;/session-factory&gt; &lt;/hibernate-configuration&gt; </code></pre> <p>I hope you have a solution for me. Many thanks!</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload