Hibernate Annotation

3 respostas
P

Olá!
Estou com problemas para utilizar os annotations do hibernate. O projeto estava todo funcionando com os mapeamento hbm.xml, daí estou querendo colocar com annotations.

O problema acho que está no meu mapeamento de herança:
-Pessoas(classe abstrata)
-----Funcionarios(classe abstrata)
---------Gerentes
---------Peoes
-----Clientes

Segue o codigo de pessoas.hbm.xml. Fiz apenas um DAO para todas essas classes: PessoasDAO. Com este mapeamento está funcionando.
<hibernate-mapping>
	<class name="classes.Pessoas" table="pessoas">
       <id name="id" type="integer">
            <generator class="native"/>
        </id>
        <property name="nome" type="string"/>
      	<property name="cpf" type="string"/>
      	
        <joined-subclass name="classes.Funcionarios" extends="classes.Pessoas" table="funcionarios">
        	<key column="id"/>
        	<property name="matricula" type="integer"/>
        	<property name="horas" type="integer"/>
        	
        	<joined-subclass name="classes.Peoes" extends="classes.Funcionarios" table="peoes">
        		<key column="id"/>
        		<property name="valorHora" type="double"/>
        	</joined-subclass>
        	
        	<joined-subclass name="classes.Gerentes" extends="classes.Funcionarios" table="gerentes">
        		<key column="id"/>
        		<property name="valorContrato" type="double"/>
        	</joined-subclass>
        	
    	</joined-subclass>

    	<joined-subclass name="classes.Clientes" extends="classes.Pessoas" table="clientes">
        	<key column="id"/>
        	<property name="codCliente" type="integer"/>
	    </joined-subclass>
    </class>
</hibernate-mapping>

O que eu tentei fazer pra mapear com annotations foi o seguinte:

@Entity
@Inheritance(strategy = InheritanceType.JOINED)
@Table(name="pessoas")
public abstract class Pessoas{

@Entity
@Table(name="clientes")
public class Clientes extends Pessoas implements Serializable{

@Entity
@Inheritance(strategy = InheritanceType.JOINED)
@Table(name="funcionarios")
public abstract class Funcionarios extends Pessoas{

@Entity
@Table(name="peoes")
public class Peoes extends Funcionarios implements Serializable{

@Entity
@Table(name="gerentes")
public class Gerentes extends Funcionarios implements Serializable{
Para utilizar Annotations, configurei da seguinte forma o DAO:
public PessoasDAO() throws Exception{
		factory = new AnnotationConfiguration()
		.addPackage("classes")
                .addAnnotatedClass(Pessoas.class)
                .addAnnotatedClass(Clientes.class)
                .addAnnotatedClass(Funcionarios.class)
                .addAnnotatedClass(Gerentes.class)
                .addAnnotatedClass(Peoes.class)
                .buildSessionFactory();
	}
O erro que ocorre quando vou executar é:
Exception in thread "main" java.lang.IllegalAccessError: tried to access method org.hibernate.cfg.Mappings.<init>(Ljava/util/Map;)V from class org.hibernate.cfg.ExtendedMappings

Bem, se alguém puder ajudar, acho que é SÓ isso :)

3 Respostas

P

Esses aí eu omiti no post, mas coloquei todas as “chaves” primárias com @Id e @Column e os outros atributos com @Column (todos os @Column estão com o name identificado igual ao BD).

vlw

wolmirGarbin

Boa Tarde!

Cara aqui tem um breve tutorial…

Espero que possa te ajudar ele tem a classe pai e classe filha anotadas…
mas tem mais duas estrategias que poderia utilizar eu acho essa a melhor…

Valeu espero que ajude!

raikk0n3n

cade os atributos e os get/set nos seus beans???

exemplos
@Id
@Column
e etc
???

Criado 4 de novembro de 2007
Ultima resposta 4 de nov. de 2007
Respostas 3
Participantes 3