Olá pessoal…
Estou utilizando o VRaptor como framework da minha aplicação junto com o Hibernate…
Criei as classes que serão mapeadas pelo hibernate e usei o esquema de criação de tabelas do Hibernate…
Aí que mora o problema:
Entre minhas classes existem 3 em particular que estou com dificuldades:
Usuario;
Imovel;
Telefone;
Um usuário pode ter 'n' telefones, como também um imóvel pode ter 'n' telefones...
Entre os outros atributos das classes Usuario e Imovel eu coloquei:
@OneToMany
private List<Telefone> telefones;
E a classe Telefone eu só joguei as informações pertinentes a telefone como "código de área", "telefone", etc...
Quando usei o Hibernate para criar as tabelas, ele me criou duas tabelas adicionais que não possuem classes relacionadas a elas, que são:
"usuario_telefone"
"imovel_telefone"
Essas tabelas criadas pelo Hibernate possuem apenas dois códigos sendo um do telefone e outro da entidade em questão (Usuario ou Imovel).
Só que quando vou, por exemplo, gravar um Imóvel ele [b]não[/b] grava o telefone.
Tentei fazer ele gravar o telefone separado e beleza, consegui. Mas o relacionamento entre a Entidade e o Telefone fica perdida...
Tentei gravar além do telefone, este relacionamento também, jogando nessas tabelas intermediárias(imovel_telefone) o código da entidade e o código do telefone mas dá um erro, o seguinte erro:
(apenas um trecho, que acredito ser o mais importante para entender)
09:00:31,531 DEBUG AST:266 - --- HQL AST ---
\-[INSERT] 'insert'
+-[INTO] 'into'
| +-[IDENT] 'imovel_telefone'
| \-[RANGE] 'column-spec'
| +-[IDENT] 'Imovel_id'
| \-[IDENT] 'telefones_id'
\-[QUERY] 'query'
\-[SELECT_FROM] 'SELECT_FROM'
+-[FROM] '{filter-implied FROM}'
\-[SELECT] 'select'
\-[VECTOR_EXPR] '{vector}'
+-[COLON] ':'
| \-[IDENT] 'entidade'
\-[COLON] ':'
\-[IDENT] 'telId'
09:00:31,531 DEBUG ErrorCounter:68 - throwQueryException() : no errors
09:00:31,625 DEBUG HqlSqlBaseWalker:111 - insert << begin [level=1, statement=insert]
09:00:31,640 ERROR [vraptor2]:253 - Servlet.service() for servlet vraptor2 threw exception
org.hibernate.hql.ast.QuerySyntaxException: imovel_telefone is not mapped [insert into imovel_telefone (Imovel_id, telefones_id) select (:entidade, :telId) ]
at org.hibernate.hql.ast.util.SessionFactoryHelper.requireClassPersister(SessionFactoryHelper.java:158)
at org.hibernate.hql.ast.HqlSqlWalker.createIntoClause(HqlSqlWalker.java:941)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.intoClause(HqlSqlBaseWalker.java:839)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.insertStatement(HqlSqlBaseWalker.java:479)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:253)
Bem, alguém teria alguma idéia do que eu posso fazer nesse caso?
Teria que fazer as instruções sql mesmo? Ou teria que melhorar minha modelagem OO?
Desde já sou grato pela ajuda!!!