Boa tarde, Estou dando manutenção em um projeto meio antigo e me deparei com um erro que está muito complicado de resolver, sei que não tem haver com os cursos, mas se alguém puder me ajudar eu agradeço muito. Eis o que está ocorrendo, quando tento persistir uma única entidade (sem relacionamento com outras) tudo funciona perfeitamente, porém quando há um relacionamento, lança a seguinte exceção.
Caused by: java.lang.NoSuchMethodError: org.hibernate.persister.entity.EntityPersister.getIdentifier(Ljava/lang/Object;Lorg/hibernate/engine/SessionImplementor;)Ljava/io/Serializable;
at org.hibernate.envers.tools.Tools.getIdentifier(Tools.java:67)
at org.hibernate.envers.tools.Tools.entitiesEqual(Tools.java:50)
at org.hibernate.envers.entities.mapper.relation.ToOneIdMapper.mapToMapFromEntity(ToOneIdMapper.java:71)
at org.hibernate.envers.entities.mapper.MultiPropertyMapper.map(MultiPropertyMapper.java:86)
at org.hibernate.envers.synchronization.work.AddWorkUnit.<init>(AddWorkUnit.java:47)
at org.hibernate.envers.event.AuditEventListener.onPostInsert(AuditEventListener.java:148)
at org.hibernate.action.EntityInsertAction.postInsert(EntityInsertAction.java:131)
at org.hibernate.action.EntityInsertAction.execute(EntityInsertAction.java:110)
at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:279)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:263)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:167)
at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:298)
at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1001)
at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:339)
at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106)
at org.hibernate.ejb.TransactionImpl.commit(TransactionImpl.java:54)
at org.springframework.orm.jpa.JpaTransactionManager.doCommit(JpaTransactionManager.java:512)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:754)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:723)
at org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:393)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:120)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:622)
at com.agrosolutions.sai.service.impl.CulturaServiceImpl$$EnhancerByCGLIB$$25812640.salvar(<generated>)
at com.agrosolutions.sai.view.CadastrarCulturaBean.gravar(CadastrarCulturaBean.java:90)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.el.parser.AstValue.invoke(AstValue.java:279)
... 61 more
Segue as entidades que estou tentando persistir.
Model.java
@MappedSuperclass
public class Model implements Serializable {
private static final long serialVersionUID = -9107527412541149651L;
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "entity_sequence")
private Long id;
@Version
@Column
private Long version;
// Getters, setters, equals e hashCode
}
Atividade.java
@Entity
@SequenceGenerator(name = "entity_sequence", sequenceName = "sq_Atividade", allocationSize = 1)
@Table
@Audited
@NamedQueries({
@NamedQuery(name = "Atividade.todos",
query = "SELECT a FROM Atividade a ORDER BY a.nome ASC"),
@NamedQuery(name = "Atividade.excluir",
query = "DELETE FROM Atividade a WHERE a.id = :pId")
})
public class Atividade extends Model{
private static final long serialVersionUID = 1566315074224178619L;
private String nome;
@Transient
private String sortField;
@Transient
private SortOrder sortOrder;
// Getters e setters
}
Cultura.java
@Entity
@SequenceGenerator(name = "entity_sequence", sequenceName = "sq_Cultura", allocationSize = 1)
@Table
@BatchSize(size=40)
@Audited
@NamedQueries({
@NamedQuery(name = "Cultura.todos",
query = "SELECT c FROM Cultura c ORDER BY c.nome ASC"),
@NamedQuery(name = "Cultura.excluir",
query = "DELETE FROM Cultura c WHERE c.id = :pId")
})
public class Cultura extends Model{
private static final long serialVersionUID = -5301045033069126100L;
@Column(unique=true)
private String nome;
@ManyToOne
private Atividade atividade;
private String image;
@Transient
private String sortField;
@Transient
private SortOrder sortOrder;
public Cultura() {
super();
image = "cultura.jpg";
}
@OneToMany(cascade = CascadeType.ALL, mappedBy="cultura")
@BatchSize(size=10)
private List<Variedade> variedades;
// Getters e setters
}
Já procurei em vários lugares e não encontrei nada sobre, isso. Preciso entregar o projeto e não sei mais o que fazer.
Desde já agradeço.