невозможно создать таблицу аудита в базе данных - PullRequest
0 голосов
/ 19 мая 2019
package com.ct.org.dto;
import javax.persistence.Entity;
import javax.persistence.Id;
import org.hibernate.envers.Audited;
@Entity
@Audited
public class UserDetails {
@Id
private int userId;
private String userName;
public int getUserId() {
    return userId;
}
public void setUserId(int userId) {
    this.userId = userId;
}
public String getUserName() {
    return userName;
}
public void setUserName(String userName) {
    this.userName = userName;
}
 }

package com.ct.org.client;

import java.util.List;

import org.hibernate.Session;
import org.hibernate.SessionFactory; 
import org.hibernate.cfg.Configuration;
import org.hibernate.envers.AuditReader;
import org.hibernate.envers.AuditReaderFactory;
import com.ct.org.dto.UserDetails;

 public class HibernateTest {
   public static void main(String[] args) {

    UserDetails user = new UserDetails();
    user.setUserId(1);
    user.setUserName("waseem");


    SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
    Session session = sessionFactory.openSession();


    session.save(user);

    session.close();

    Session session2 = sessionFactory.openSession();
    UserDetails userObject = (UserDetails) session2.get(UserDetails.class, 1);

    session2.beginTransaction();
    userObject.setUserName("FT");
    session2.update(userObject);
    session2.getTransaction().commit();
    session2.close();

    AuditReader auditReader = AuditReaderFactory.get(session2);

    List<Number> revisionNumbers = auditReader.getRevisions(UserDetails.class, userObject.getUserId());

    for (Number rev : revisionNumbers) {
        UserDetails auditedUser = auditReader.find(UserDetails.class, userObject.getUserId(), rev);
    }

}

}

<session-factory>
    <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
    <property name="connection.url">jdbc:mysql://localhost:3306/ct``</property>
    <property name="connection.username">root</property>
    <property name="connection.password">root</property>

    <property name="connection.pool_size">1</property>


<!-- Depending on what we configure model objects it will create a schema 
    which requires to save that model object -->
<property name="hbm2ddl.auto">update</property>

<property name="dialect">org.hibernate.dialect.MySQLDialect</property>

<!-- Dialect is class. What kind of language we are going to use to connect 
    to database so we can use Dialect -->

<property name="show_sql">true</property>


    <mapping class="com.ct.org.dto.UserDetails" />

</session-factory>

При запуске приложения появляется исключение.

  1. Hibernate: выберите userdetail0_.userId как userId0_0_, userdetail0_.userName как userName0_0_ из UserDetails userdetail0_, где userdetail0_.userId =? Исключение в потоке "main" org.hibernate.envers.exception.AuditException: необходимо установить класс org.hibernate.envers.event.AuditEventListener в качестве пост-вставки, обновления и удаления прослушивателя событий. в org.hibernate.envers.AuditReaderFactory.get (AuditReaderFactory.java:71) на com.kpit.org.client.HibernateTest.main (HibernateTest.java:61)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...