Mapeamento hibernate

2 respostas
J

aiii galera

nao ta dando certo um mapeamento aki e to precisando de ajuda

quero mapear duas tabelas com relacionamento OneToOne usando hibernate annotations

eu tenho uma tabela cadastro de documentos e vou ter varias tabelas ligado ao cadastro

ex:

1 Tabela Nota Fiscal - 1 Tabela Emitente
1 Tabela Nota Fiscal - 1 Tabela Destinatario

tentei mapear assim:

@Entity public class CadastroNF { @Id @GeneratedValue private long codigo; @OneToOne(cascade = CascadeType.ALL) @PrimaryKeyJoinColumn private Emitente emi; }

@Entity
public class Emitente
{
	@Id
	@GeneratedValue
	private long codigo;
	@Column(name="vlr", nullable=false)
	private double valorNota;

                 //vários outros atributos
}

criei a tabela pelo proprio hibernate e ele gerou duas tabelas…até ai, tudo bem porque era isso mesmo que eu queria

mas a tabela Cadastro só saiu com o campo código, enquanto a tabela Emitente gravou certinho os dados do emitente.
sÓ QUE cadastro deveria gravar a FK do Emitente, e não apareceu a FK na tabela cadastro…

dessa forma nao consigo relacionar as duas tabelas, já que emitente tb nao vai ter nenhuma fk de cadastro.

alguem consegue dizer aonde eu errei no mapeamento??? segui a documentacao do hibernate mas deu nisso dai hehehe

2 Respostas

wagne23

Você pode fazer o mapeamento tambem na tabela Emitente

@Entity public class Emitente { @Id @GeneratedValue private long codigo; @Column(name="vlr", nullable=false) private double valorNota; @OneToOne(cascade = CascadeType.ALL) private CadastrNF cadastro; //vários outros atributos }
Assim o hibernate cria as chaves estrangeiras nas duas tabelas.

J

deu certooo

agora o problema ta sendo na hora de fazer a consulta

olha o que to fazendo no meu backbean
List<Cadastro> lista =  session.createCriteria("from CadastroNF").list();
		for(Cadastro c : lista)
		{
			System.out.print(c.getCodigo());
			System.out.print(c.getNome());
		}
dá esse erro
Exception in thread "main" org.hibernate.MappingException: Unknown entity: from CadastroNF
	at org.hibernate.impl.SessionFactoryImpl.getEntityPersister(SessionFactoryImpl.java:548)
	at org.hibernate.impl.SessionImpl.getOuterJoinLoadable(SessionImpl.java:1584)
	at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1550)
	at org.hibernate.impl.CriteriaImpl.list(CriteriaImpl.java:283)
	at Teste.main(Teste.java:32)

to pesquisando e todos os lugares falam que h problema no mapeamento no hibernet.cfg.xml

olha como fiz
<?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 name="testesimples"> 
<property name="hibernate.connection.driver_class">org.postgresql.Driver</property> 
<property name="hibernate.connection.password">postgres</property> 
<property name="hibernate.connection.url">jdbc:postgresql://localhost:5432/postgres</property> 
<property name="hibernate.connection.username">postgres</property> 
<property name="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</property> 
<mapping class="entidades.CadastroNF" />
<mapping class="entidades.Emitente" /> 
</session-factory> 
</hibernate-configuration>

sendo que esse arquivo ta na raiz

Criado 9 de julho de 2009
Ultima resposta 9 de jul. de 2009
Respostas 2
Participantes 2