मैं अपनी संस्थाओं का ऑडिट करने के लिए हाइबरनेट एनवर्र्स का उपयोग करता हूं।हाइबरनेट Envers का उपयोग कर एक जॉइन टेबल और संबंधित इकाइयों का ऑडिट कैसे नहीं करें?
मेरे पास एक ऑडिट इकाई है, Foo
, जिसमें गुणों के रूप में List<Bar>
है। हालांकि, मैं Bar
इकाइयों का ऑडिट नहीं करना चाहता हूं। इस प्रकार, मैं ने लिखा है कि:
@Entity
@Audited
public class Foo {
@JoinTable(name = "T_FOO_BAR", joinColumns = @JoinColumn(name = "FOO_ID"), inverseJoinColumns = @JoinColumn(name = "BAR_ID"))
@ManyToMany(cascade = PERSIST)
@Audited(targetAuditMode = RelationTargetAuditMode.NOT_AUDITED)
public List<Bar> getBars() {
return bars;
}
}
अब, मैं Foo
के एक संशोधन प्राप्त करना चाहते हैं: दुर्भाग्य से
AuditReader reader = AuditReaderFactory.get(getEntityManager());
Foo revision = (Foo) reader.createQuery().forEntitiesAtRevision(Foo.class, 42).getSingleResult();
, जब मैं सभी डेटा प्राप्त करना चाहते हैं (यानी जब यह आलसी लोड bars
) , मैं, त्रुटि ORA-00942: table or view does not exist
मिल के रूप में यह क्वेरी करने के लिए करने की कोशिश की:
select ... from T_FOO_BAR_AUD x, T_BAR y where ...
मैं यह है कि @Audited(targetAuditMode = RelationTargetAuditMode.NOT_AUDITED)
का उपयोग कर, हाइबरनेट Envers लिंक रखेंगे Bar
वर्तमान इकाई के आइटम के साथ।
तो मैं T_BAR
और T_FOO_BAR
(जॉइन टेबल) तालिकाओं का स्पष्ट रूप से ऑडिट करने के बिना, मेरी समस्या को कैसे हल कर सकता हूं? दूसरे शब्दों में, जब मैं अपनी संशोधन इकाई से bars
की सूची पुनर्प्राप्त करता हूं, तो मुझे अपनी वर्तमान इकाई से bars
की सूची मिलती है (क्योंकि Foo
और Bar
के बीच के लिंक ऑडिट नहीं किए जाते हैं)।
धन्यवाद।