0

manytoone アノテーションによって関連付けられた次の 2 つのクラスがあります。

@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.(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.

何が問題なの?」

本当にありがとう!リーバイス

4

1 に答える 1

1

実行時に使用される jar が、コードのコンパイルに使用される jar と同じバージョンであることを確認してください。

これで問題が解決しない場合 (ほとんどの場合、解決しない可能性があります)、現在使用している jar の代わりに、Hibernate Tools で提供されている jar をクラスパスに配置してください。技術的には、使用しているjarの1つに、クラスパスにあるものとは異なる別のjarの特定のバージョンを使用してコンパイルされたクラスが含まれている場合に発生する可能性があります。

于 2010-08-16T18:35:29.620 に答える