Hibernate.Envers: @Audited at @ManyToOne выдает исключение
Существуют следующие два класса, связанных многоконтурной аннотацией:
@Entity
public class Firma {
@Id
@GeneratedValue
private int id;
@OneToMany(mappedBy = "firma")
private List<Mitarbeiter> mitarbeiter;
//getter und setter methods
}
@Entity
public class Mitarbeiter {
@Id
@GeneratedValue
private int id;
@Audited()
private String name;
@ManyToOne
@Audited(targetAuditMode=RelationTargetAuditMode.NOT_AUDITED)
private Firma firma;
//getter und setter methods
}
Если я удаляю @Audited(...), а затем сохраняю Mitarbeiter, все работает нормально. Но с @Audited-Annotation выдается следующее исключение:
java.lang.NoSuchMethodError: org.hibernate.persister.entity.EntityPersister.getIdentifier (Ljava / lang / Object; Lorg / hibernate / engine / SessionImplementor;) Ljava / io / Serializable; org.hibernate.envers.tools.Tools.getIdentifier (Tools.java:67) org.hibernate.envers.tools.Tools.entitiesEqual (Tools.java:50) org.hibernate.envers.entities.mapper.relation.ToOneIdMapper. mapToMapFromEntity (ToOneIdMapper.java:71) org.hibernate.envers.entities.mapper.MultiPropertyMapper.map (MultiPropertyMapper.java:86) org.hibernate.envers.synchronization.work.ModWorkUnit. (ModWavahnit. or.envers.event.AuditEventListener.onPostUpdate(AuditEventListener.java:165) org.hibernate.action.EntityUpdateAction.postUpdate(EntityUpdateAction.java:200) org.hibernate.action..engine.ActionQueue.execute(ActionQueue.java:279) org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:263) org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:16nate) org.hiber.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:321) org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:50) org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1027) org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:365) org.hibernateDtransaction. commit (JDBCTransaction.java:137) org.hibernate.ejb.TransactionImpl.commit(TransactionImpl.java:54)
В чем проблема?
Спасибо! джинсы
1 ответ
Убедитесь, что файлы jar, используемые во время выполнения, имеют ту же версию, что и файлы jar, используемые для компиляции кода.
Если это не решит вашу проблему (и, скорее всего, не решит), поместите jar-файлы, предоставляемые Hibernate Tools, в ваш путь к классам вместо тех, которые вы используете прямо сейчас. Технически, это может произойти, если один из используемых вами jar-файлов содержит классы, которые были скомпилированы с использованием определенной версии другого jar-файла, который отличается от того, который у вас есть в вашем classpath.