Mapeamento com hibernate

16 respostas
L

estou com problemas no mapeamento
cliente.hbm.xml

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
   "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
   "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
    <class name="model.Cliente" table="cliente">
        <id name="codigo"></id>
        <property name="nome"/>
        <property name="cidade"/>
        <property name="uf"/>
        <property name="rua"/>
        <property name="numero"/>
        <property name="cod_contato"/>
        <many-to-one
         name="contato"
         class="model.Contato"
         column="codigo"/>
    </class>
</hibernate-mapping>

contato.hbm.xml

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
   "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
   "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
    <class name="model.Contato" table="contato">
        <id name="codigo"></id>
        <property name="nome"/>
        <property name="cidade"/>
        <property name="fone"/>      
         <set name="cliente"   inverse="true"/>
<key column="cod_contato"/>
<one-to-many class="model.Cliente"/>
    </class>
</hibernate-mapping>

acredito que seja os relacionamentos tem um relacionamento de 1 para n de contato para cliente
se alguem puder ajudar agradeco

segue o erro

type Exception report

message 

description The server encountered an internal error () that prevented it from fulfilling this request.

exception 

org.apache.jasper.JasperException
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:372)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)


root cause 

java.lang.NullPointerException
	model.OpenSessao.getSession(OpenSessao.java:18)
	org.apache.jsp.adicionaContato_jsp._jspService(adicionaContato_jsp.java:84)
	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)


note The full stack trace of the root cause is available in the Apache Tomcat/5.0.30 logs.

16 Respostas

rafaelglauber

primeira coisa, coloca a package na frente da classes em one-to-many e many-to-ane

rafaelglauber

ps. cuidado com a ft e a assinatura.

L

persiste o erro

  • isto agora
org.hibernate.MappingException: Error reading resource: contato.hbm.xml
	at org.hibernate.cfg.Configuration.addResource(Configuration.java:452)
	at org.hibernate.cfg.Configuration.parseMappingElement(Configuration.java:1263)
	at org.hibernate.cfg.Configuration.parseSessionFactory(Configuration.java:1235)
	at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1217)
	at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1184)
	at org.hibernate.cfg.Configuration.configure(Configuration.java:1112)
	at org.hibernate.cfg.Configuration.configure(Configuration.java:1098)
	at model.OpenSessao.<clinit>(OpenSessao.java:10)
	at org.apache.jsp.adicionaContato_jsp._jspService(adicionaContato_jsp.java:84)
	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
	at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
	at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
	at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
	at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
	at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
	at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
	at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
	at java.lang.Thread.run(Thread.java:595)
Caused by: org.hibernate.MappingException: invalid mapping
	at org.hibernate.cfg.Configuration.addInputStream(Configuration.java:399)
	at org.hibernate.cfg.Configuration.addResource(Configuration.java:449)
	... 38 more
Caused by: org.xml.sax.SAXParseException: The content of element type "set" is incomplete, it must match "(meta*,subselect?,cache?,synchronize*,comment?,key,(element|one-to-many|many-to-many|composite-element|many-to-any),loader?,sql-insert?,sql-update?,sql-delete?,sql-delete-all?,filter*)".
	at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
	at org.apache.xerces.util.ErrorHandlerWrapper.error(Unknown Source)
	at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
	at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
	at org.apache.xerces.impl.dtd.XMLDTDValidator.handleEndElement(Unknown Source)
	at org.apache.xerces.impl.dtd.XMLDTDValidator.emptyElement(Unknown Source)
	at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown Source)
	at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
	at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
	at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
	at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
	at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
	at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
	at org.dom4j.io.SAXReader.read(SAXReader.java:465)
	at org.hibernate.cfg.Configuration.addInputStream(Configuration.java:398)
	... 39 more
thiago.quinelato

O set em Contato deve ficar assim:

<set name="cliente" inverse="true">
    <key column="cod_contato"/>  
    <one-to-many class="model.Cliente"/>
</set>
L

La vai o codigo denovo agora mexido
contato

package model;

public class Contato {
	private Integer codigo;
	private String Nome;
	private String Cidade;
	private Integer Fone;
	public Contato(){}
	public Integer getCodigo() {
		return codigo;
	}
	public void setCodigo(Integer codigo) {
		this.codigo = codigo;
	}
	public String getNome() {
		return Nome;
	}
	public void setNome(String nome) {
		Nome = nome;
	}
	public String getCidade() {
		return Cidade;
	}
	public void setCidade(String cidade) {
		Cidade = cidade;
	}
	public Integer getFone() {
		return Fone;
	}
	public void setFone(Integer fone) {
		Fone = fone;
	}	
}

Cliente

package model;


public class Cliente {	
	
	private Integer codigo;
	private String nome;
	private String cidade;
	private String uf;
	private String rua;
	private Integer numero;
	private Integer cod_contato;
	
	public Cliente(){}
	public Integer getCodigo() {
		return codigo;
	}
	public void setCodigo(Integer codigo) {
		this.codigo = codigo;
	}
	public String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}
	public String getCidade() {
		return cidade;
	}
	public void setCidade(String cidade) {
		this.cidade = cidade;
	}
	public String getUf() {
		return uf;
	}
	public void setUf(String uf) {
		this.uf = uf;
	}
	public String getRua() {
		return rua;
	}
	public void setRua(String rua) {
		this.rua = rua;
	}
	public Integer getNumero() {
		return numero;
	}
	public void setNumero(Integer numero) {
		this.numero = numero;
	}
	public Integer getCod_contato() {
		return cod_contato;
	}
	public void setCod_contato(Integer cod_contato) {
		this.cod_contato = cod_contato;
	}

}

OpenSessao

package model;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class OpenSessao{	
	private static SessionFactory factory;
	public OpenSessao(){
try {
factory = new Configuration().configure().buildSessionFactory();
} catch (Exception e) {
e.printStackTrace();
factory = null;
}
}
public static Session getSession() {
return factory.openSession();
}
}

cliente.hbm

&lt;?xml version="1.0"?&gt;
&lt;!DOCTYPE hibernate-mapping PUBLIC
   "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
   "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"&gt;
&lt;hibernate-mapping&gt;
    &lt;class name="model.Cliente" table="cliente"&gt;
        &lt;id name="codigo"&gt;&lt;/id&gt;
        &lt;property name="nome"/&gt;
        &lt;property name="cidade"/&gt;
        &lt;property name="uf"/&gt;
        &lt;property name="rua"/&gt;
        &lt;property name="numero"/&gt;
        &lt;property name="cod_contato"/&gt;
        &lt;many-to-one
         name="contato"
         class="model.Contato"
           column="codigo"/&gt;       
    &lt;/class&gt;
&lt;/hibernate-mapping&gt;

contato.hbm

&lt;?xml version="1.0"?&gt;
&lt;!DOCTYPE hibernate-mapping PUBLIC
   "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
   "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"&gt;
&lt;hibernate-mapping&gt;
    &lt;class name="model.Contato" table="contato"&gt;
        &lt;id name="codigo"&gt;&lt;/id&gt;
        &lt;property name="nome"/&gt;
        &lt;property name="cidade"/&gt;
        &lt;property name="fone"/&gt;            
    &lt;set name="cliente" inverse="true"&gt;  
        &lt;key column="cod_contato"/&gt;    
        &lt;one-to-many class="model.Cliente"/&gt;  
    &lt;/set&gt;  
    &lt;/class&gt;
&lt;/hibernate-mapping&gt;

cfg.xml

&lt;?xml version='1.0' encoding='UTF-8'?&gt;
&lt;!DOCTYPE hibernate-configuration PUBLIC
          "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
          "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"&gt;
&lt;hibernate-configuration&gt;
&lt;session-factory&gt;  
	&lt;property name="connection.url"&gt;jdbc:postgresql://localhost:5432/psql&lt;/property&gt;
	&lt;property name="connection.username"&gt;postgres&lt;/property&gt;
	&lt;property name="connection.password"&gt;512815&lt;/property&gt;
	&lt;property name="connection.driver_class"&gt;org.postgresql.Driver&lt;/property&gt;
	&lt;property name="dialect"&gt;org.hibernate.dialect.PostgreSQLDialect&lt;/property&gt;
	&lt;mapping resource="contato.hbm.xml"/&gt;
	&lt;mapping resource="cliente.hbm.xml"/&gt;			 
&lt;/session-factory&gt;
&lt;/hibernate-configuration&gt;

jsp

&lt;%@ page language="java" contentType="text/html; charset=ISO-8859-1"
	pageEncoding="ISO-8859-1"%&gt;
&lt;!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"&gt;

&lt;%@page import="org.hibernate.Session"%&gt;
&lt;%@page import="org.hibernate.*"%&gt;
&lt;%@page import="model.OpenSessao" %&gt;
&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type"content="text/html; charset=ISO-8859-1"&gt;
&lt;jsp:useBean id="c" class="model.Contato" /&gt;
&lt;jsp:useBean id="cc" class="model.Cliente" /&gt;
&lt;title&gt;Insert title here&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;%	
   OpenSessao op = new OpenSessao();
Session sessao = OpenSessao.getSession();
Transaction transaction = sessao.beginTransaction();
	c.setCodigo(new Integer(79));
	c.setCidade("apuca");
	c.setFone(new Integer(22));
	c.setNome("alex o cara");
  	cc.setCodigo(new Integer(1));
	cc.setCod_contato(new Integer (10));
	out.println(c.getCidade());	
	sessao.save(c);	
	sessao.save(cc);
	transaction.commit();
	sessao.close();	
%&gt;
&lt;/body&gt;
&lt;/html&gt;
L

ta dando este erro

HTTP Status 500 - 

--------------------------------------------------------------------------------

type Exception report

message 

description The server encountered an internal error () that prevented it from fulfilling this request.

exception 

org.apache.jasper.JasperException
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:372)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)


root cause 

java.lang.NullPointerException
	model.OpenSessao.getSession(OpenSessao.java:16)
	org.apache.jsp.adicionaContato_jsp._jspService(adicionaContato_jsp.java:78)
	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)


note The full stack trace of the root cause is available in the Apache Tomcat/5.0.30 logs.

e + isto

org.hibernate.MappingException: Repeated column in mapping for entity: model.Cliente column: codigo (should be mapped with insert="false" update="false")
	at org.hibernate.mapping.PersistentClass.checkColumnDuplication(PersistentClass.java:504)
	at org.hibernate.mapping.PersistentClass.checkPropertyColumnDuplication(PersistentClass.java:526)
	at org.hibernate.mapping.PersistentClass.checkColumnDuplication(PersistentClass.java:544)
	at org.hibernate.mapping.PersistentClass.validate(PersistentClass.java:335)
	at org.hibernate.mapping.RootClass.validate(RootClass.java:188)
	at org.hibernate.cfg.Configuration.validate(Configuration.java:839)
	at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1000)
	at model.OpenSessao.&lt;init&gt;(OpenSessao.java:9)
	at org.apache.jsp.adicionaContato_jsp._jspService(adicionaContato_jsp.java:77)
	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
	at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
	at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
	at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
	at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
	at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
	at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
	at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
	at java.lang.Thread.run(Thread.java:595)
org.hibernate.MappingException: Repeated column in mapping for entity: model.Cliente column: codigo (should be mapped with insert="false" update="false")
	at org.hibernate.mapping.PersistentClass.checkColumnDuplication(PersistentClass.java:504)
	at org.hibernate.mapping.PersistentClass.checkPropertyColumnDuplication(PersistentClass.java:526)
	at org.hibernate.mapping.PersistentClass.checkColumnDuplication(PersistentClass.java:544)
	at org.hibernate.mapping.PersistentClass.validate(PersistentClass.java:335)
	at org.hibernate.mapping.RootClass.validate(RootClass.java:188)
	at org.hibernate.cfg.Configuration.validate(Configuration.java:839)
	at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1000)
	at model.OpenSessao.&lt;init&gt;(OpenSessao.java:9)
	at org.apache.jsp.adicionaContato_jsp._jspService(adicionaContato_jsp.java:77)
	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
	at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
	at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
	at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
	at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
	at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
	at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
	at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
	at java.lang.Thread.run(Thread.java:595)

se alguem puder me ajudar fico mto grato pois estou tentando aprender sozinho.

L

Ninguem se habilita?

thiago.quinelato

Como a mensagem diz, a coluna codigo foi mapeada duas vezes, uma como id da tabela e outra como chave para uma associação many-to-one. Dá uma olhada melhor nisso. Será que faz sentido o many-to-one ficar na mesma coluna do id?

L

obrigado pela ajuda quinelato

&lt;many-to-one  
          name="contato"  
          class="model.Contato"  
            column="codigo"/&gt;

O que eu estou tentando fazer aqui é apontar para o codigo da tabela contato que no caso é FK na tabela clientes, e no cliente ele se chama cod_contato.
Aluma outra forma de fazer isto?

F

Se você mapear somente o “cod_contato” como many-to-one:

<class name="model.Cliente" table="cliente">
        <id name="codigo"></id>
        <property name="nome"/>
        <property name="cidade"/>
        <property name="uf"/>
        <property name="rua"/>
        <property name="numero"/>
        <many-to-one
         name="cod_contato"
         class="model.Contato"
         column="cod_contato"/>       
    </class>
L

maldito seja o hibernate nao funciona este 1:n alguem pode ajudar?
o codigo ta ai em cima

Gobain

Então, a única coisa q eu vi q parece errado pra mim é o fato de vc não ter tirado a coluna cod_contato do mapeamento Cliente.hbm
Aqui em baixo eu tirei ó!

&lt;?xml version="1.0"?&gt;  
&lt;!DOCTYPE hibernate-mapping PUBLIC  
   "-//Hibernate/Hibernate Mapping DTD 3.0//EN"  
   "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"&gt;  
&lt;hibernate-mapping&gt;  
    &lt;class name="model.Cliente" table="cliente"&gt;  
        &lt;id name="codigo"&gt;&lt;/id&gt;
        &lt;property name="nome"/ 
        &gt;&lt;property name="cidade"/&gt;
        &lt;property name="uf"/&gt;
        &lt;property name="rua"/&gt;
        &lt;property name="numero"/&gt;
        &lt;many-to-one  name="contato"  class="model.Contato"  column="codigo"/&gt;         
    &lt;/class&gt;  
&lt;/hibernate-mapping&gt;

Esse tá certinho

&lt;?xml version="1.0"?&gt;
&lt;!DOCTYPE hibernate-mapping PUBLIC
   "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
   "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"&gt;
&lt;hibernate-mapping&gt;
    &lt;class name="model.Contato" table="contato"&gt;
        &lt;id name="codigo"&gt;&lt;/id&gt;
        &lt;property name="nome"/&gt;
        &lt;property name="cidade"/&gt;
        &lt;property name="fone"/&gt;            
        &lt;set name="cliente" inverse="true"&gt;  
            &lt;key column="cod_contato"/&gt;    
            &lt;one-to-many class="model.Cliente"/&gt;  
        &lt;/set&gt;  
    &lt;/class&gt;
&lt;/hibernate-mapping&gt;
L

lgweb penso que quando mapeias um deves ter nessa classe uma propiedade do tipo Set

Se mapeias assim:

<set name="cliente" inverse="true">
    <key column="cod_contato"/>  
    <one-to-many class="model.Cliente"/>
</set>

acho que deves criar a propriedade cliente na classe Contacto assim:

private Set<Cliente> cliente = new HashSet<Cliente>();

e os getters e setters habituais.

Espero ter ajudado.

Gobain

É verdade, não havia reparado no código, mas o set tem q ser incluso na classe Contato um Set para os Clientes e na classe Cliente um

private Contato contato;
L

Ai galera valew mesmo ajudou mto , to iniciando com o hibernate nao sabia desse esquema de set agora to começando a entender sempre que vc usar um set vai ter que ter um list na classe para representa-lo é isso?

L

Se mapeias um estás a indicar que tens um Set definido na tua classe.

Um Set é uma interface que te permite declarar por exemplo um HashSet() e nao uma List.

Se queres usar uma List deves mapear no hibernate usando a tag .

Tem atenção que este mapeamento é diferente do .

Bom trabalho.

Criado 29 de outubro de 2007
Ultima resposta 7 de nov. de 2007
Respostas 16
Participantes 6