EclipseLink Audit / История / Отслеживание изменений

Я попытался реализовать способ отслеживания изменений данных и создания журнала истории для моего приложения. Поскольку я использую EclipseLink, должно быть легко и возможно получить изменения, как онинапишите на EclipseLink FAQ Первое решение работает, но второе на основе событий не будет работать. Каждый раз, когда событие вызывается, ObjectChangeSet имеет значение null.

Причина, по которой я не просто использую HistoryPolicy, заключается в том, что я не хочу хранить информацию о вошедшем в систему пользователе (не о пользователе db) и измененных данных в отдельной таблице. Я много искал, но не могу найти решение этой проблемы.

Это мой класс сущности:

@Entity
@EntityListeners(HistoryEventListener.class)
@Table(name = "t_users")
    public class Users implements Serializable {
private static final long serialVersionUID = 1L;

@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "GENSEQ_USERS")
@SequenceGenerator(name = "GENSEQ_USERS", sequenceName = "SEQ_USERS", allocationSize = 1, initialValue = 1)
private Integer id;
@Column(nullable = false)
private String userid;
...
}

И это мой класс DescriptorEventAdapter:

public class HistoryEventListener extends DescriptorEventAdapter {

@Override
public void postUpdate(DescriptorEvent event) {
    ObjectChangeSet changeSet = event.getChangeSet();
    if (changeSet != null) {
        System.out.println("ObjectChangeSet not null");
    }
    System.out.println("ObjectChangeSet null");
}

@Override
public void postMerge(DescriptorEvent event) {
    ObjectChangeSet changeSet = event.getChangeSet();
    if (changeSet != null) {
        System.out.println("ObjectChangeSet not null");
    }
    System.out.println("ObjectChangeSet null");
}
}

Файл persistence.xml, который я использовал:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
<persistence-unit name="PhoneBookPU" transaction-type="RESOURCE_LOCAL">
    <provider>
        org.eclipse.persistence.jpa.PersistenceProvider
    </provider>
        <exclude-unlisted-classes>false</exclude-unlisted-classes>
    <properties>
        <property name="javax.persistence.jdbc.driver" value="oracle.jdbc.OracleDriver"/>
        <property name="javax.persistence.jdbc.url" value="jdbc:oracle:thin:@somehostname:1521:xyz"/>
        <property name="javax.persistence.jdbc.password" value="getyourown"/>
        <property name="javax.persistence.jdbc.user" value="username"/>
        <property name="javax.persistence.logging.level" value="INFO"/>
    </properties>
</persistence-unit>
</persistence>

Любая помощь приветствуется.

Ответы на вопрос(1)

Ваш ответ на вопрос