Boa tarde.
Estou fazendo um relacionamento recursivo no hibernate, não dá erro nenhum, consigo salvar, mas meu item não está recuperando os filhos no eager…
class Composicao implements Item{
public List<Item> itens;
public Item itemPai;
}
Bom… o Hibernate não me deixa mapear isto, mas é a “QUIDIDADE” da minha solução. Preciso ter isto em meu BD.
Ou eu terei que desfazer da “elegancia” em da interface e montar duas listas, uma com elementos e outra com composição, ou terei encontrar uma forma de mapear isto de forma correta.
Tentei fazer uns testes, colocando esta interface como uma superclasse que estende minha superclasse “DomainObject”, mas ele me lança a seguinte exception:
Initial SessionFactory creation failed.org.hibernate.AnnotationException: Use of @OneToMany or @ManyToMany targeting an unmapped class: br.com.mailanalyzer.analise.Composicao.itens[br.com.mailanalyzer.analise.Item]
Exception in thread "main" java.lang.ExceptionInInitializerError
at br.com.mailanalyzer.dao.HB.<init>(HB.java:118)
at br.com.mailanalyzer.dao.HB.getInstancia(HB.java:130)
at br.com.mailanalyzer.dao.BaseDAO.<init>(BaseDAO.java:35)
at br.com.mailanalyzer.dao.SinonimosDAO.<init>(SinonimosDAO.java:26)
at br.com.mailanalyzer.analise.Sinonimo.getInstancia(Sinonimo.java:35)
at br.com.mailanalyzer.analise.Elemento.setPalavra(Elemento.java:92)
at br.com.mailanalyzer.analise.Raiz.aprender(Raiz.java:91)
at br.com.mailanalyzer.analise.Teste.aprenderTudo(Teste.java:21)
at br.com.mailanalyzer.analise.Teste.main(Teste.java:90)
Caused by: org.hibernate.AnnotationException: Use of @OneToMany or @ManyToMany targeting an unmapped class: br.com.mailanalyzer.analise.Composicao.itens[br.com.mailanalyzer.analise.Item]
at org.hibernate.cfg.annotations.CollectionBinder.bindManyToManySecondPass(CollectionBinder.java:1068)
at org.hibernate.cfg.annotations.CollectionBinder.bindStarToManySecondPass(CollectionBinder.java:600)
at org.hibernate.cfg.annotations.CollectionBinder$1.secondPass(CollectionBinder.java:541)
at org.hibernate.cfg.CollectionSecondPass.doSecondPass(CollectionSecondPass.java:43)
at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1130)
at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:324)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1286)
at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:859)
at br.com.mailanalyzer.dao.HB.<init>(HB.java:112)
... 8 more
Java Result: 1
Já testei de tudo, mas não consigo fazer funcionar.
O itemPai sempre será uma composição, então tentei torná-lo um objeto de composição também, mas nada…
Se eu faço com interface, a exceção é de que meus java beans não estão implementados, e se for com a superclasse, a exceção é esta aí…
Alguma ideia de como posso resolver este problema?