Hibernate.Envers:@Audited at@manytone引发异常
有以下两个类,由多个注释关联:Hibernate.Envers:@Audited at@manytone引发异常,hibernate,hibernate-envers,Hibernate,Hibernate Envers,有以下两个类,由多个注释关联: @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 @Gene
@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
}
@实体
公共类公司{
@身份证
@生成值
私有int-id;
@OneToMany(mappedBy=“firma”)
私人名单;
//getter和setter方法
}
@实体
公共级米塔贝特{
@身份证
@生成值
私有int-id;
@审计的()
私有字符串名称;
@许多酮
@已审核(targetAuditMode=关系targetAuditMode.未审核)
私人公司;
//getter和setter方法
}
如果我删除@Audited(…),然后保存一个Mitarbeiter,那么一切正常。但对于@Audited注释,会引发以下异常:
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.(ModWorkUnit.java:48)
org.hibernate.envers.event.AuditEventListener.onPostUpdate(AuditEventListener.java:165)
org.hibernate.action.EntityUpdateAction.postUpdate(EntityUpdateAction.java:200)
org.hibernate.action.EntityUpdateAction.execute(EntityUpdateAction.java:179)
org.hibernate.engine.ActionQueue.execute(ActionQueue.java:279)
org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:263)
org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:168)
org.hibernate.event.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.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:137)
org.hibernate.ejb.TransactionImpl.commit(TransactionImpl.java:54)
有什么问题吗`
非常感谢!
Levis检查运行时使用的JAR版本是否与编译代码时使用的JAR版本相同
如果它不能解决您的问题(很可能不会),请将Hibernate工具提供的JAR放在类路径中,而不是您现在正在使用的JAR。从技术上讲,如果您正在使用的某个jar包含使用另一个jar的特定版本编译的类,而该版本与您在类路径中的版本不同,则可能会发生这种情况。谢谢您的回答!但如何做到这一点呢?哪些目录是相关的?