| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/11/2007 16:49:02
|
Victor
JavaChild
Membro desde: 08/11/2003 09:54:38
Mensagens: 120
Offline
|
Boa tarde,
Estou iniciando com Hibernate e estou tendo problema para mapear um relacionamento @OneToMany.
Segue as classes abaixo:
//CLASSE Locatario-------------------------------------------------------
package persistencia;
import java.util.Collection;
import javax.persistence.*;
import java.io.Serializable;
import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.CascadeType;
@Entity
public class Locatario implements Serializable
{
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator ="genCodLocatario")
@SequenceGenerator(name ="genCodLocatario", sequenceName ="genCodLocatario", allocationSize=1)
private int codLocatario;
private String nome;
private String cpf_cnpj;
private String tipo;
@OneToMany(mappedBy ="locatario", fetch = FetchType.LAZY)
@Cascade(CascadeType.ALL)
private Collection<TelefoneLocatario> telefones;
//Métodos getters e setters
}
//CLASSE TelefoneLocatario------------------------------------------------------
package persistencia;
import javax.persistence.*;
import java.io.Serializable;
import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.CascadeType;
import org.hibernate.annotations.Fetch;
import org.hibernate.annotations.FetchMode;
@Embeddable
public class TelefoneLocatario implements Serializable
{
private String telefone;
private String tipo;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name="codLocatario", insertable=true, updatable=true)
@Fetch(FetchMode.JOIN)
@Cascade(CascadeType.SAVE_UPDATE)
private Locatario locatario;
//Métodos getters e setters
}
o arquivo hibernate.cfg.xml está assim:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- properties -->
<property name="connection.driver_class"> org.firebirdsql.jdbc.FBDriver </property>
<property name="connection.url"> jdbc:firebirdsql:localhost/3050:/usr/SistemaAlugueis/alugueis.gdb </property>
<property name="dialect"> org.hibernate.dialect.FirebirdDialect </property>
<property name="show_sql">true</property>
<property name="connection.username">SYSDBA</property>
<property name="connection.password">masterkey</property>
<property name="connection.pool_size">10</property>
<!-- mapping classes -->
<mapping class="persistencia.Locatario"/>
<mapping class="persistencia.TelefoneLocatario"/>
</session-factory>
</hibernate-configuration>
Está aparecendo a seguinte mensagem de erro:
Exception in thread "AWT-EventQueue-0" org.hibernate.AnnotationException: Use of @OneToMany or @ManyToMany targeting an unmapped class: persistencia.Locatario.telefones[persistencia.TelefoneLocatario]
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:1130)
at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:316)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1286)
at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:915)
O que estou fazendo de errado?
|
victorcastrojunior@yahoo.com.br |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/11/2007 09:36:47
|
Victor
JavaChild
Membro desde: 08/11/2003 09:54:38
Mensagens: 120
Offline
|
HELP PLEASE!!!!!!!!
|
victorcastrojunior@yahoo.com.br |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/11/2007 09:43:01
|
Marky.Vasconcelos
Moderador
![[Avatar]](/images/avatar/04940fadf3702cbd84b7a48161037c4f.png)
Membro desde: 11/04/2007 18:18:20
Mensagens: 5932
Localização: São Paulo/SP
Offline
|
Tá dando algum erro ou o que?
|
Facebook @MarkyHitchhiker +Mark WP: MarkyTech's
Projects:
Android Roadmap - Aprenda Android do inicio (Java é o unico pre-requisito)
Towel ( ObjectTableModel & Swing & Utils )
Tower Defense Game - Java2D [Open-Source] [How-to-play]
EVGD: Programação de jogos (links) Ponto V! - Desenvolvimento de jogos para indies, curiosos e profissionais
DefaultTableModel?! PARE! Não faça isso! Faça melhor!
Dicas: Faça perguntas inteligentes! ; MigLayout ; GridBagLayout (Joke)
Develop games is fantastic, with words you can make worlds!!!
DON'T PANIC!
MarkyHitchhiker's Blog! |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/11/2007 10:27:04
|
Victor
JavaChild
Membro desde: 08/11/2003 09:54:38
Mensagens: 120
Offline
|
Está aparecendo a seguinte mensagem de erro:
Exception in thread "AWT-EventQueue-0" org.hibernate.AnnotationException: Use of @OneToMany or @ManyToMany targeting an unmapped class: persistencia.Locatario.telefones[persistencia.TelefoneLocatario]
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:1130)
at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:316)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1286)
at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:915)
|
victorcastrojunior@yahoo.com.br |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/11/2007 11:28:20
|
Victor
JavaChild
Membro desde: 08/11/2003 09:54:38
Mensagens: 120
Offline
|
Consegui resolver o problema da seguinte maneira:
A minha classe TelefoneLocatario não tinha uma chave primária, já que não é necessário, pois apenas uma chave estrangeira com referência a classe Locatario já deveria resolver.
Como estava dando erro eu criei uma chave primária para TelefoneLocatario e resolveu o problema.
Porém, gostaria de saber se é possível utilizando o Hibernate, mapear uma classe que não possua uma chave primária???
|
victorcastrojunior@yahoo.com.br |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/11/2007 11:34:18
|
ddduran
Virtual Machine Man
![[Avatar]](/images/avatar/1239f1a40e317d2de113e7ca17f52464.jpg)
Membro desde: 13/11/2006 16:44:54
Mensagens: 523
Offline
|
todo entity tem que ter um id, o que você quer fazer é um embedded object (acho)
da uma lida nos dois link abaixo são execelentes
http://docs.jboss.org/ejb3/app-server/HibernateAnnotations/reference/en/html_single/index.html
http://www.agiledata.org/essays/mappingObjects.html
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/11/2007 14:24:28
|
Victor
JavaChild
Membro desde: 08/11/2003 09:54:38
Mensagens: 120
Offline
|
O problema é que quando estou criando uma classe @embeddable está aparecendo este erro:
Exception in thread "AWT-EventQueue-0" org.hibernate.AnnotationException: Use of @OneToMany or @ManyToMany targeting an unmapped class: persistencia.Locatario.telefones[persistencia.TelefoneLocatario]
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:1130)
at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:316)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1286)
at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:915)
Não sei mais o q faço, não é possível que não tem como mapear uma classe que não tenha uma chave primária!!!!
|
|
|
 |
|
|