Olá a todos,
Por gentileza,
Tenho uma super classe Pessoa e duas outras classes Aluno e Professor que extendem aquela, pois bem, estou tentando fazer o mapeamento na minha classe HibernateUtil e estou recebendo a seguinte exception:
22/12/2010 22:38:19 org.apache.catalina.core.StandardWrapperValve invoke
GRAVE: Servlet.service() for servlet action threw exception
java.lang.IncompatibleClassChangeError: class org.hibernate.cfg.ExtendedMappings has interface org.hibernate.cfg.Mappings as super class
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632)
at java.lang.ClassLoader.defineClass(ClassLoader.java:616)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2733)
at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1124)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1612)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1491)
at org.hibernate.cfg.AnnotationConfiguration.createExtendedMappings(AnnotationConfiguration.java:182)
at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:272)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1377)
at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:859)
at com.myapp.struts.dao.HibernateUtil.<clinit>(HibernateUtil.java:45)
at com.myapp.struts.dao.AlunoDAO.<init>(AlunoDAO.java:20)
at com.myapp.struts.action.AdicionaAlunoAction.execute(AdicionaAlunoAction.java:31)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:425)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:228)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:861)
at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:579)
at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1584)
at java.lang.Thread.run(Thread.java:619)
HibernateUtil:
package com.myapp.struts.dao;
import com.myapp.struts.modelo.Aluno;
import com.myapp.struts.modelo.Curso;
import com.myapp.struts.modelo.Disciplina;
import com.myapp.struts.modelo.Endereco;
import com.myapp.struts.modelo.Pessoa;
import com.myapp.struts.modelo.Professor;
import com.myapp.struts.modelo.Turma;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;
/**
*
* @author HOUSE
*/
public class HibernateUtil {
private static SessionFactory factory;
Pessoa pessoa;
Aluno aluno;
Professor professor;
Endereco endereco;
Turma turma;
Disciplina disciplina;
Curso curso;
static {
AnnotationConfiguration cfg = new AnnotationConfiguration();
cfg.addAnnotatedClass(Aluno.class);
cfg.addAnnotatedClass(Pessoa.class);
cfg.addAnnotatedClass(Professor.class);
// cfg.addAnnotatedClass(Endereco.class);
// cfg.addAnnotatedClass(Turma.class);
// cfg.addAnnotatedClass(Disciplina.class);
// cfg.addAnnotatedClass(Curso.class);
factory = cfg.buildSessionFactory();
}
public Session getSession() {
return factory.openSession();
}
}
Pessoa:
package com.myapp.struts.modelo;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.MappedSuperclass;
/**
*
* @author HOUSE
*/
@MappedSuperclass
public class Pessoa implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
@Column(name="id_pessoa")
private int pessoa_id;
private String nome;
private String email;
private String telefone;
// @OneToOne(cascade=CascadeType.ALL, fetch=FetchType.EAGER, mappedBy="Pessoa")
// private Endereco endereco;
// public void setEndereco(Endereco endereco) {
// this.endereco = endereco;
// }
public void setTelefone(String telefone) {
this.telefone = telefone;
}
public void setPessoa_id(int pessoa_id) {
this.pessoa_id = pessoa_id;
}
public void setEmail(String email) {
this.email = email;
}
public void setNome(String nome) {
this.nome = nome;
}
public int getPessoa_id() {
return pessoa_id;
}
public String getEmail() {
return email;
}
public String getNome() {
return nome;
}
// public Endereco getEndereco() {
// return endereco;
// }
public String getTelefone() {
return telefone;
}
}
Aluno:
package com.myapp.struts.modelo;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.PersistenceContext;
import javax.persistence.PrimaryKeyJoinColumn;
import javax.persistence.Table;
/**
*
* @author HOUSE
*/
@Entity
@Table(name="aluno", schema="anotacoes")
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public class Aluno extends Pessoa {
@PersistenceContext
@Column(name ="matricula")
private String matricula;
private String nota;
public void setNota(String nota) {
this.nota = nota;
}
public void setMatricula(String matricula) {
this.matricula = matricula;
}
public String getMatricula() {
return matricula;
}
public String getNota() {
return nota;
}
}
Professor:
package com.myapp.struts.modelo;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.PrimaryKeyJoinColumn;
import javax.persistence.Table;
/**
*
* @author HOUSE
*/
@Entity
@Table(name="professor", schema="anotacoes")
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public class Professor extends Pessoa {
@Id
private int professor_id;
private String titulo;
public void setProfessor_id(int professor_id) {
this.professor_id = professor_id;
}
public void setTitulo(String titulo) {
this.titulo = titulo;
}
public String getTitulo() {
return titulo;
}
public int getProfessor_id() {
return professor_id;
}
}
O hibernate está funcionando perfeitamente para outras finalidades, a questão é que não estou conseguindo fazer Aluno e Professor herdar Pessoa.
Algúem poderia ajudar?
Desde já agradeço.
[]'s

