Zmiany EclipseLink Audit / History / Track

Próbowałem zaimplementować sposób śledzenia zmian danych i tworzenia dziennika historii dla mojej aplikacji. Ponieważ korzystam z EclipseLink, uzyskanie takich zmian powinno być łatwe i możliwenapisz na FAQ EclipseLink Pierwsze rozwiązanie działa, ale drugie zdarzenie nie działa. Za każdym razem, gdy zdarzenie zostanie podniesione, ObjectChangeSet ma wartość NULL.

Powodem, dla którego nie używam po prostu HistoryPolicy, jest to, że nie będę przechowywać informacji o zalogowanym użytkowniku (a nie użytkowniku db) i zmienionych danych w osobnej tabeli. Szukałem dużo, ale nie mogę znaleźć żadnego rozwiązania tego problemu.

To jest moja klasa encji:

@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;
...
}

I to jest moja klasa 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");
}
}

Plik persistence.xml, którego użyłem:

<?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>

Każda pomoc byłaby bardzo mile widziana.

questionAnswers(1)

yourAnswerToTheQuestion