рдпрд╣ рдХреНрдпреЛрдВ рдЖрд╡рд╢реНрдпрдХ рд╣реИ?
рдЙрджреНрдпрдо рд╡рд┐рдХрд╛рд╕ рдореЗрдВ, рдЕрдХреНрд╕рд░ рдХреБрдЫ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреА рд╕рдВрдкрд╛рджрди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрддрд╛ рд╣реИред
рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдПрдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рдорд┐рд▓рд╛ рд╣реИред рдлрд┐рд░ рдХрд┐рд╕реА рдиреЗ рдЙрд╕рдХреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдмрджрд▓ рджреАред рдлрд┐рд░ рд╕рдВрдЦреНрдпрд╛ред рдлрд┐рд░ рдЙрдиреНрд╣реЛрдВрдиреЗ рд░реВрд╕реА рд╕рдВрдШ рдХреЗ рдкрд╛рд╕рдкреЛрд░реНрдЯ рд╕реЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рд╡рд┐рджреЗрд╢реА рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ред рдЬрд░реНрдорди рдкрд╛рд╕рдкреЛрд░реНрдЯред рдореИрдВ рдЙрди рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рдЗрддрд┐рд╣рд╛рд╕ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдФрд░, рдпрд╣ рдХрд╣рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдХрд┐ рдЧрд▓рддреА рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд╣реЗрдбрд░ рдХреЛ рдЯреИрдк рдХрд░рдирд╛ред
рд╣рдо рдХреНрдпрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ?
рд╣рдо рдЗрд╕ рддрдереНрдп рд╕реЗ рдЖрдЧреЗ рдмрдврд╝реЗрдВрдЧреЗ рдХрд┐ рд╣рдорд╛рд░рд╛ рд╕рд┐рд╕реНрдЯрдо рд╣рд╛рдЗрдмрд░рдиреЗрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдЕрджреНрднреБрдд рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рд╢реНрд░рд╡рдг рддрдВрддреНрд░ рддрдХ рдкрд╣реБрдВрдЪ рд╣реИ: рдПрдирд╡рд░реНрд╕ред
рдЖрдЦрд┐рд░ рдореЗрдВ рд╣рдореЗрдВ рдХреНрдпрд╛ рдорд┐рд▓рддрд╛ рд╣реИ?
рдкреНрд░рддреНрдпреЗрдХ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд▓рд┐рдП рдЬрд┐рд╕рдХрд╛ рдкрд░рд┐рд╡рд░реНрддрди рд╣рдо рдПрдирд╡рд░реНрд╕ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдкреНрд▓реЗрдЯ рдмрдирд╛рдПрдЧрд╛ рдЬрд┐рд╕рдореЗрдВ рд╣рдо рд╣рд░ рдмрд╛рд░ рдСрдбрд┐рдЯ рдЯреЗрдмрд▓ рдХреЗ рд╕рд╛рде рдХреБрдЫ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд░рд┐рдХреЙрд░реНрдб рдбрд╛рд▓реЗрдВрдЧреЗред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
рддрд╛рд▓рд┐рдХрд╛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ (рджрд╕реНрддрд╛рд╡реЗрдЬрд╝):
рдЖрдИрдбреА | рд╢реНрд░реГрдВрдЦрд▓рд╛ | рд╕рдВрдЦреНрдпрд╛ |
1 | 1000 | 100000 |
рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдХреЗ рд▓рд┐рдП рдСрдбрд┐рдЯ рдЯреЗрдмрд▓: (DOCUMENT_AUD)
рдЖрдИрдбреА | REV | REVTYPE | рд╢реНрд░реГрдВрдЦрд▓рд╛ | рд╕рдВрдЦреНрдпрд╛ |
1 | 1 | 0 | 1000 | 100000 |
1 | 2 | 1 | 1345 | 100000 |
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЖрдИрдбреА рдХреЗ рд╕рд╛рде рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рд▓рд┐рдП 2 рд╕рдВрд╢реЛрдзрди рд╣реИрдВ = 1. рдПрдХ (REVTYPE = 0 рдХреЗ рд╕рд╛рде) рдирдпрд╛ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд░рд┐рдХреЙрд░реНрдб рд╣реИ, рджреВрд╕рд░рд╛ рд░рд┐рдХреЙрд░реНрдб рдкрд░рд┐рд╡рд░реНрддрди рд╣реИред 1000 рд╢реНрд░реГрдВрдЦрд▓рд╛ 1345 рдмрди рдЧрдИред
рдареАрдХ рд╣реИ, рдЖрдк рдХрд╣рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдХрдм рд╣реБрдЖ? Envers рдПрдХ рдЕрдиреНрдп рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ REVINFO рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдореЗрдВ рд╕рдВрд╢реЛрдзрди рд╕рдВрдЦреНрдпрд╛ рдФрд░ рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЦреЗрддреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЗрд╕реЗ рдЙрддрд╛рд░рдиреЗ рдореЗрдВ рдХреНрдпрд╛ рд▓рдЧрддрд╛ рд╣реИ?
рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рд╕реЗ, рд╣рдореЗрдВ рдЦреБрдж рд╣рд╛рдЗрдмрд░рдиреЗрдЯ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдФрд░ рдХрд┐рд╕реА рдЪреАрдЬ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреАред
рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдирд┐рдореНрди рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рджреГрдврд╝рддрд╛ рд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред xml, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рд░ рдХреЛрдИ рд╕рдордЭрддрд╛ рд╣реИ рдХрд┐ рдЙрдирдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ:
<property name="hibernate.ejb.event.post-insert" value="org.hibernate.ejb.event.EJB3PostInsertEventListener,org.hibernate.envers.event.AuditEventListener" /> <property name="hibernate.ejb.event.post-update" value="org.hibernate.ejb.event.EJB3PostUpdateEventListener,org.hibernate.envers.event.AuditEventListener" /> <property name="hibernate.ejb.event.post-delete" value="org.hibernate.ejb.event.EJB3PostDeleteEventListener,org.hibernate.envers.event.AuditEventListener" /> <property name="hibernate.ejb.event.pre-collection-update" value="org.hibernate.envers.event.AuditEventListener" /> <property name="hibernate.ejb.event.pre-collection-remove" value="org.hibernate.envers.event.AuditEventListener" /> <property name="hibernate.ejb.event.post-collection-recreate" value="org.hibernate.envers.event.AuditEventListener" />
рдпрд╣ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХрд┐рд╕реА рдЗрдХрд╛рдИ рдХреЛ рдСрдбрд┐рдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЖрдкрдХреЛ рдСрдбрд┐рдЯреЗрдмрд▓ рдПрдиреЛрдЯреЗрд╢рди рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЬреИрд╕реЗ:
@Entity @Audited public Document
рдпрджрд┐ рдЖрдк рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдПрдХ рдпреЛрдЬрдирд╛ рдмрдирд╛рддреЗ рд╣реИрдВ, рддреЛ рдСрдбрд┐рдЯ рдЯреЗрдмрд▓ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ hbm2ddl рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдПрдВрдЯреАрд╕реНрдХ рдХрд╛рд░реНрдп рдХреЗ рдХреНрд▓рд╛рд╕рдирд╛рдо рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
classname="org.hibernate.tool.ant.EnversHibernateToolTask"
рдЗрд╕рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЗрди рд╕рдВрд╢реЛрдзрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрд╕реНрдХрд░рдг рдкреНрд▓реЗрдЯ рдФрд░ рдПрдХ рдЯрд╛рдЗрдо рдЯреЗрдмрд▓ рд╣реИред рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рд╣рдо рдЗрд╕ рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рдереЛрдбрд╝рд╛ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдПрдХ рдЕрд▓рдЧ рдирд╛рдо рджреЗрдВ? @RevisionEntity рдПрдиреЛрдЯреЗрд╢рди рд╣рдорд╛рд░реА рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП hurriesред
рдЕрдкрдиреА рдЗрдХрд╛рдИ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ:
@Entity @org.hibernate.envers.RevisionEntity(RevisionListener.class) public class RevisionEntity extends DefaultRevisionEntity { }
DefaultRevisionEntity рдпрд╣рд╛рдВ рдПрдХ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЗрдХрд╛рдИ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рдФрд░ рд╕рдВрд╢реЛрдзрди рд╕рдВрдЦреНрдпрд╛ рд╢рд╛рдорд┐рд▓ рд╣реИред рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рдЪреАрдЬрд╝ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
@Entity @RevisionEntity(ExampleListener.class) public class ExampleRevEntity { @Id @GeneratedValue @RevisionNumber private int id; @RevisionTimestamp private long timestamp; ... }
@RevisionNumber рдФрд░ @RevisionTimestamp рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЖрдк DefaultRevisionEntity рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЙрдиреНрд╣реЗрдВ рджреВрд╕рд░реА рдмрд╛рд░ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред
рд╣рдорд╛рд░реЗ рд╕рд╛рд░ рдХреЛ рдХреИрд╕реЗ рдкреВрд░рдХ рдХрд░реЗрдВ? рдмрд╕ рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рдХреА рддрд░рд╣!
@Entity @org.hibernate.envers.RevisionEntity(RevisionListener.class) public class RevisionEntity extends DefaultRevisionEntity { @ManyToOne private User user;
рд▓реЗрдХрд┐рди рд╕рд╡рд╛рд▓ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдЕрддрд┐рд░рд┐рдХреНрдд рдбреЗрдЯрд╛ рдХрдм рдбрд╛рд▓рд╛ рдЬрд╛рдирд╛ рд╣реИ? рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдХ рд╕рдВрд╢реЛрдзрдирдХрд░реНрддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╡рд░реНрдЧ рд╣реИ рдЬреЛ org.hibernate.envers.RevisionListener рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреА рдПрдХ рд╡рд┐рдзрд┐ рд╣реИ:
public void newRevision(Object revision);
рдпрд╣ рддрдм рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛ рдЬрдм рд╣рдорд╛рд░реА рдСрдбрд┐рдЯреЗрдб рдЗрдХрд╛рдИ (рджрд╕реНрддрд╛рд╡реЗрдЬрд╝) рдмрджрд▓ рдЬрд╛рдПрдЧреАред рдпрд╣рд╛рдВ рд░рд┐рд╡реАрдЬрди рдСрдмреНрдЬреЗрдХреНрдЯ рд╣рдорд╛рд░реА рд░рд┐рд╡рд┐рдЬрди рдЗрд╢реНрдпрд┐рдирд┐рдЯреА рд╣реИред рддрд╛рдХрд┐ рд╣рдо рдХреБрдЫ рдРрд╕рд╛ рд▓рд┐рдЦ тАЛтАЛрд╕рдХреЗрдВ
RevisionEntity revisionEntity = (RevisionEntity) revision; revisionEntity.setUser(...);
рд▓реЗрдХрд┐рди рдбреЗрдЯрд╛ рдХреИрд╕реЗ рдкрдврд╝реЗрдВ?
рдЪреВрдВрдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдСрдбрд┐рдЯ рдЯреЗрдмрд▓ (Document_AUD) рдХреЗ рд▓рд┐рдП рдореИрдк рдХреА рдЧрдИ рдЗрдХрд╛рдИ рдирд╣реАрдВ рд╣реИ, рдЖрдк рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдХреНрд╡реЗрд░реА рдирд╣реАрдВ рд▓рд┐рдЦ рд╕рдХрддреЗред рд▓реЗрдХрд┐рди рдПрдирд╡рд░реНрд╕ рдЖрдкрдХреА рд╕рд╣рд╛рдпрддрд╛ рдХреЗ рд▓рд┐рдП рдЖрддрд╛ рд╣реИред рдЗрд╕ рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ AuditQuery рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЖрдк рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
AuditQuery query = AuditReaderFactory.get(em).createQuery();
рдареАрдХ рд╣реИ, рддреЛ рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдпрд╣ рдХрд╣рдирд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рдЪрд╛рд╣рд┐рдП, рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдВрд╢реЛрдзрди рдпрд╛ рд╢рд╛рдпрдж рд╕рдВрд╢реЛрдзрди рдХреА рд╕реВрдЪреА:
query.forRevisionsOfEntity(Document.class, false, false);
рдпрд╣рд╛рдВ рдЭрдВрдбреЗ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИрдВред рдпрджрд┐ рдЙрдирдореЗрдВ рд╕реЗ рдЕрдВрддрд┐рдо рд╕рддреНрдп рд╣реИ, рддреЛ рдХреНрд╡реЗрд░реА рд╣рдЯрд╛рдП рдЧрдП рд░рд┐рдХреЙрд░реНрдб рднреА рд▓реМрдЯрд╛рдПрдЧреАред
рд▓реЗрдХрд┐рди рджреВрд╕рд░рд╛ рдЭрдВрдбрд╛ рд╡рд╛рдкрд╕реА рдореВрд▓реНрдп рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рд╕рддреНрдп рд╣реИ, рддреЛ рдХреЗрд╡рд▓ рд╕рдВрд╢реЛрдзрди рд╕реНрд╡рдпрдВ рд╕реВрдЪреА рдореЗрдВ рд╣реЛрдВрдЧреЗред рдФрд░ рдпрджрд┐ рдирд╣реАрдВ, рддреЛ 3 рддрддреНрд╡реЛрдВ рдХреЗ рд╕рд░рдгрд┐рдпреЛрдВ рд╕реЗ рдпреБрдХреНрдд рдПрдХ рд╕реВрдЪреА рджреА рдЧрдИ рд╣реИред
рдкрд╣рд▓рд╛ рд╕рдВрд╢реЛрдзрди рд╣реИ, рджреВрд╕рд░рд╛ рд╕рдВрд╢реЛрдзрди рд╣реИ, рдФрд░ рддреАрд╕рд░рд╛ рд╕рдВрд╢реЛрдзрди рдХрд╛ рдкреНрд░рдХрд╛рд░ рд╣реИред
рдЖрдк рдЗрд╕ рдХреНрд╡реЗрд░реА рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд┐рдиреНрди рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ рд╕рдВрд▓рдЧреНрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореБрдЦреНрдп рдЗрдХрд╛рдИ рдХреА рдЖрдИрдбреА рджреНрд╡рд╛рд░рд╛:
query.add(AuditEntity.id().eq(docId))
рдпрд╛ рдкреБрдирд░реАрдХреНрд╖рдг рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░:
query.add(AuditEntity.revisionProperty("user_id").eq(userId))
рд▓реЗрдХрд┐рди рдЕрдм (рд╣рд╛рдЗрдмрд░рдиреЗрдЯ 3.6.1 - 3.6.4) рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдПрдХ
рдмрдЧ ред
рдареАрдХ рд╣реИ, рдЕрдВрдд рдореЗрдВ, рд╣рдо рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ:
List<Object []> resultList = query.getResultList();
рдСрдбрд┐рдЯ рд░рдгрдиреАрддрд┐
рдХреНрд╡реЗрд░реА рджрдХреНрд╖рддрд╛ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЕрдиреБрд╢рдВрд╕рд╛ рдХреА рдЬрд╛рддреА рд╣реИ рдХрд┐ рдЖрдк ValidityAuditStrategy рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдпрд╣ рд░рдгрдиреАрддрд┐ _AUD рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдореЗрдВ рдПрдХ рдФрд░ рдлрд╝реАрд▓реНрдб рдЬреЛрдбрд╝рддреА рд╣реИ - REVENDред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЖрдкрдХреЛ рдЕрдзрд┐рдХрддрдо рд╕рдВрд╢реЛрдзрди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдиреЗрд╕реНрдЯреЗрдб рдЪрдпрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
рдЗрд╕реЗ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рджреГрдврд╝рддрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрдВрдХреНрддрд┐ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред xml:
<property name="org.hibernate.envers.audit_strategy" value="org.hibernate.envers.strategy.ValidityAuditStrategy"/>
рд╕рдВрджрд░реНрдн:
рд╕реАрддрдирд┐рджреНрд░рд╛ рдореЗрдВ рд╣реЛрдирд╛рдпрд╣ habrayuzer dzigoro рдХрд╛ рдПрдХ рд▓реЗрдЦ рд╣реИ, рдЬрд┐рд╕реЗ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИред