Problema com Hibernate Annotation e one-to-many

7 respostas
S

Galera, estou tendo um problema com One-to-many.
Tenho 1 trecho com diversas numerações e uma numeração com apenas 1 trecho.

Segue meu mapeamento:
Trecho:

@OneToMany(cascade = CascadeType.ALL, mappedBy="oidTrecho", fetch=FetchType.EAGER)
	private Collection<Numero> numeros = new ArrayList<Numero>();

Quero que minha entidade de número não tenha mapeamento com trecho para facilitar, pois realmente não preciso deste dado.

Porém quando eu tento startar a aplicação, da o seguinte erro:

Caused by: org.hibernate.AnnotationException: Use of @OneToMany or @ManyToMany targeting an unmapped class: br.com.promaps.model.entity.Trecho.numeros[br.com.promaps.model.entity.Numero]
	at org.hibernate.cfg.annotations.CollectionBinder.bindManyToManySecondPass(CollectionBinder.java:1033)
	at org.hibernate.cfg.annotations.CollectionBinder.bindStarToManySecondPass(CollectionBinder.java:576)
	at org.hibernate.cfg.annotations.CollectionBinder$1.secondPass(CollectionBinder.java:517)
	at org.hibernate.cfg.CollectionSecondPass.doSecondPass(CollectionSecondPass.java:43)
	at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1136)
	at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:316)
	at org.hibernate.cfg.Configuration.buildMappings(Configuration.java:1121)
	at org.springframework.orm.hibernate3.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:675)
	at org.springframework.orm.hibernate3.AbstractSessionFactoryBean.afterPropertiesSet(AbstractSessionFactoryBean.java:211)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1367)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1333)
	... 93 more

Minha entidade já está mapeada no XML do hibernate, devidamente configurada. Porém continua a dar o erro. Alguém poderia me dar uma luz? Obrigado.

7 Respostas

marcusmage

A classe entity Numero está mapeada nos arquivos de configuração do Hibernate?

Pelo stack, parece que a sua entidade Numero não está mapeada, ou se está o Hibernate não está encontrando.

S

Opa, obrigado por responder.
Mas a classe está mapeada sim, testei ela sem as relações de many-to-one e compilou normalmente. Tentei de todas as formas o mapeamento mas nada, se alguém souber como solucionar.

marcusmage

Vc está usando mappedBy para criar um mapeamento bidirecional.
Então na sua classe Numero deve existir uma referencia (campo da classe) para Trecho com o mesmo nome que vc usado no mappedBy.
Neste caso, é oidTrecho.

Ou seja, em Trecho vc tem

public class Trecho implements Serializable{



@OneToMany(cascade = CascadeType.ALL, mappedBy=oidTrecho, fetch=FetchType.EAGER)

Collection numeros = new ArrayList();



}
public class Numero implements Serializable{



private Trecho oidTrecho;



}

isso deve funcionar.
}

S

Olá amigo, obrigado pela ajuda. Porém fiz o que falou e infelizmente o erro continua sendo o mesmo:

Use of @OneToMany or @ManyToMany targeting an unmapped class: br.com.promaps.model.entity.Trecho.numeros[br.com.promaps.model.entity.Numero]

Alguma solução?

J

eu estou tentando fazer esse mapeamento tambem mais não estou conseguindo alguem poderia escrever o codigo do one to many e do outro lado o many to one?

LPJava

dar uma olhada: http://blog.camilolopes.com.br/onetomany-com-hibernate-jpa/

J

eu estou com mais um problema segui certinho o site que vc me mandou e quando eu vou ver a relacao que o hibernate criou pelo phpmyadmin me deparo que a relação está ON DELETE RESTRICT ON UPDATE RESTRICT e não estou conseguindo mudar isso

Ambos as propriedades não ficam cascade, alguem pode dar um help

Quero fazer um relacionamento em que uma pessoa pode ter varios animais

public class PessoaVO{

@OneToMany(mappedBy = "dono", targetEntity = AnimalVO.class, fetch = FetchType.LAZY, cascade = CascadeType.ALL)
	private List<AnimalVO> animais;
}

public class AnimalVO{
@ManyToOne
	@JoinColumn(name="dono_id")
	private PessoaVO dono;
}
Criado 17 de abril de 2009
Ultima resposta 25 de mai. de 2012
Respostas 7
Participantes 4