मैं अपने जेपीए इकाइयों (एक लॉग फ़ाइल में, डेटाबेस नहीं) में एक परिवर्तन ट्रैकर शामिल करने का प्रयास कर रहा हूं, हालांकि मेरे DescriptorEventAdapter द्वारा किए गए परिवर्तनसेट हमेशा शून्य है। मैं एक्लिप्ससेंक 2.5.2, ओजेडीबीसी 6, वसंत-ओआरएम 4.1.1 का उपयोग कर रहा हूं।जेपीए DescriptorEventAdapter चेंजसेट हमेशा शून्य
सभी घटनाओं को कहा जाता है (preUpdateWithChanges सहित) और परिवर्तन डेटाबेस में धकेल दिए जाते हैं। मैं इकाई अद्यतन करने के लिए entityManager.merge (इकाई) का उपयोग कर रहा हूँ।
HistoryEventListener.java
public class HistoryEventListener extends DescriptorEventAdapter {
@Override
public void preUpdate(DescriptorEvent event) {
ObjectChangeSet changeSet = event.getChangeSet(); // Always null
}
@Override
public void preUpdateWithChanges(DescriptorEvent event) {
ObjectChangeSet changeSet = event.getChangeSet();
...
};
@Override
public void postUpdate(DescriptorEvent event) {
...
}
@Override
public void postMerge(DescriptorEvent event) {
...
}
}
कुछ इकाई
@Entity
@Table(name = "XXX", schema = "XXX")
@EntityListeners(HistoryEventListener.class)
@Cache(databaseChangeNotificationType = DatabaseChangeNotificationType.NONE, isolation = CacheIsolationType.ISOLATED)
public class XXXX implements Serializable {
// id + fields
}
persistence.xml
<persistence version="2.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_2_0.xsd">
<persistence-unit name="XXXXXX"
transaction-type="RESOURCE_LOCAL">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<jta-data-source>jdbc/XXXXX</jta-data-source>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties>
<property name="eclipselink.weaving" value="static" />
<property name="eclipselink.target-database" value="Oracle11" />
</properties>
</persistence-unit>
</persistence>
eclipse wiki से UnitOfWork का उपयोग करना भी एक अशक्त ObjectChangeSet देता है।
क्या यह काम करता है जैसा कि आप कैश एनोटेशन को हटाते हैं तो आप उम्मीद करेंगे? – Chris
नहीं, वही परिणाम। कोई चेंजसेट – Martin
चेंजसेट के अलावा, बाकी वर्णनकर्ता आवेदक अपेक्षित के रूप में आबादी है? –