Erro no Hibernate

6 respostas
U

Abaixo segue o erro que foi apresentado no arquivo de log do hibernate. Em seguida mostrarei minhas classes e mapeamentos. Se alguem conseguir ajudar eu agradeço.

Erro:
11:02:22,250  INFO HbmBinder:2041 - Mapping collection: com.sismed.persistencia.tipodeexame.TipoDeExame.exames -> exame
11:02:22,250  INFO HbmBinder:2041 - Mapping collection: com.sismed.persistencia.exame.Exame.seccapts -> seccapt
11:02:22,250  INFO HbmBinder:2041 - Mapping collection: com.sismed.persistencia.exame.Exame.xas -> xa
11:02:22,265  INFO HbmBinder:2041 - Mapping collection: com.sismed.persistencia.exame.Exame.uses -> us
11:02:22,265  INFO HbmBinder:2041 - Mapping collection: com.sismed.persistencia.exame.Exame.ctes -> ct
11:02:22,281  INFO Configuration:888 - processing association property references
11:02:22,281  INFO Configuration:917 - processing foreign key constraints
11:02:22,828 ERROR HibernateUtil:33 - Building SessionFactory failed.
org.hibernate.MappingException: duplicate property mapping: 
	at org.hibernate.mapping.PersistentClass.checkPropertyDuplication(PersistentClass.java:344)
	at org.hibernate.mapping.PersistentClass.validate(PersistentClass.java:334)
	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 com.sismed.persistencia.HibernateUtil.<clinit>(HibernateUtil.java:27)
	at com.sismed.controle.ControleLogin.<init>(ControleLogin.java:13)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
	at java.lang.reflect.Constructor.newInstance(Unknown Source)
	at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:100)
	at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:76)
	at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:49)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:316)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:226)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:147)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:275)
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:317)
	at org.springframework.web.context.support.AbstractRefreshableWebApplicationContext.refresh(AbstractRefreshableWebApplicationContext.java:134)
	at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:305)
	at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:250)
	at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:219)
	at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:111)
	at javax.servlet.GenericServlet.init(GenericServlet.java:211)
	at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1091)
	at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:925)
	at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:3857)
	at org.apache.catalina.core.StandardContext.start(StandardContext.java:4118)
	at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:759)
	at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:739)
	at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:524)
	at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:589)
	at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:536)
	at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:471)
	at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1102)
	at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
	at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1020)
	at org.apache.catalina.core.StandardHost.start(StandardHost.java:718)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1012)
	at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:442)
	at org.apache.catalina.core.StandardService.start(StandardService.java:450)
	at org.apache.catalina.core.StandardServer.start(StandardServer.java:683)
	at org.apache.catalina.startup.Catalina.start(Catalina.java:537)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:271)
	at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:409)
Hibernate Mapping:
<?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>
        <property name="connection.datasource">java:/comp/env/jdbc/iwg2</property>
        <property name="hibernate.cglib.use_reflection_optimizer">true</property>
        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
        <property name="show_sql">true</property>        
        <mapping resource="com/persistencia/exame/Exame.hbm.xml" />
        <mapping resource="com/persistencia/seccapt/Seccapt.hbm.xml" />
        <mapping resource="com/persistencia/us/Us.hbm.xml" />
        <mapping resource="com/persistencia/xa/Xa.hbm.xml" />
        <mapping resource="com/persistencia/ct/Ct.hbm.xml" />
        <mapping resource="com/persistencia/pixeldata/PixelData.hbm.xml" />
    </session-factory>
</hibernate-configuration>
Classe Exame:
package com.persistencia.exame;

import java.util.Set;

public class Exame extends Entidade 
{
     private Long              codexa;
     private Set               seccapts;
     private Set               xas;
     private Set               uses;
     private Set               ctes;     

    public Exame() {
    }

    public Exame(Long codexa) {
        this.codexa = codexa;
    }

    public Long getCodexa() {
        return this.codexa;
    }
    
    public void setCodexa(Long codexa) {
        this.codexa = codexa;
    }

    public Set getSeccapts() {
        return this.seccapts;
    }
    
    public void setSeccapts(Set seccapts) {
        this.seccapts = seccapts;
    }

    public Set getXas() {
        return this.xas;
    }
    
    public void setXas(Set xas) {
        this.xas = xas;
    }

    public Set getUses() {
        return this.uses;
    }
    
    public void setUses(Set uses) {
        this.uses = uses;
    }
    
    public Set getCtes() {
		return this.ctes;
	}

    public void setCtes(Set ctes) {
		this.ctes = ctes;
	}
}
Exame.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="com.persistencia.exame.Exame" table="exame" lazy="true">
        <id name="codexa" type="long">
            <column name="CODEXA" />
            <generator class="increment" />
        </id>
                
        <set name="seccapts" inverse="true"  cascade="all">
            <key>
                <column name="Exame_CODEXA" not-null="true" />
            </key>
            <one-to-many class="com.persistencia.seccapt.Seccapt" />
        </set>

        <set name="xas" inverse="true" cascade="all">
            <key>
                <column name="Exame_CODEXA" not-null="true" />
            </key>
            <one-to-many class="com.persistencia.xa.Xa" />
        </set>

        <set name="uses" inverse="true"  cascade="all">
            <key>
                <column name="Exame_CODEXA" not-null="true" />
            </key>
            <one-to-many class="com.persistencia.us.Us" />
        </set>  
      
        <set name="ctes" inverse="true" cascade="all">
            <key>
                <column name="Exame_CODEXA" not-null="true" />
            </key>
            <one-to-many class="com.persistencia.ct.Ct" />
        </set>
        
    </class>
</hibernate-mapping>
Classe CT:
package com.persistencia.ct;

import java.io.Serializable;
import com.persistencia.exame.Exame;
import com.persistencia.pixeldata.PixelData;

public class Ct implements Serializable
{
    private Long      codima;
    private Exame     exame;
    private PixelData pixeldata;

    public Ct() {
    }
    
    public Ct(Long codima) {
        this.codima = codima;
    }
	public Long getCodima() {
		return codima;
	}

	public void setCodima(Long codima) {
		this.codima = codima;
	}

	public Exame getExame() {
		return exame;
	}

	public void setExame(Exame exame) {
		this.exame = exame;
	}

	public PixelData getPixeldata() {
		return pixeldata;
	}

	public void setPixeldata(PixelData pixeldata) {
		this.pixeldata = pixeldata;
	}
}
CT.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="com.persistencia.ct.Ct" table="ct" lazy="true">
        <id name="codima" type="long">
            <column name="CODIMA" />
            <generator class="increment" />
        </id>
        <many-to-one name="exame" class="com.persistencia.exame.Exame">
            <column name="Exame_CODEXA" not-null="true"/>
        </many-to-one>
        <many-to-one name="pixeldata" class="com.persistencia.pixeldata.PixelData"
            column="Pixeldata_CODPIX" 
            not-null="true"
            cascade="all"
            unique="true"/>        
    </class>
</hibernate-mapping>
Classe Us:
package com.persistencia.us;

import java.io.Serializable;
import com.persistencia.exame.Exame;
import com.persistencia.pixeldata.PixelData;

public class Us implements Serializable
{
     private Long      codima;
     private Exame     exame;
     private PixelData pixeldata;

    public Us() {
    }
     
    public Us(Long codima) {
        this.codima = codima;
    }

	public Long getCodima() {
		return codima;
	}
	public void setCodima(Long codima) {
		this.codima = codima;
	}
	
	public Exame getExame() {
		return exame;
	}
	public void setExame(Exame exame) {
		this.exame = exame;
	}
	
	public PixelData getPixeldata() {
		return pixeldata;
	}

	public void setPixeldata(PixelData pixeldata) {
		this.pixeldata = pixeldata;
	}
}
Us.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="com.persistencia.us.Us" table="us" lazy="true">
        <id name="codima" type="long">
            <column name="CODIMA" />
            <generator class="increment" />
        </id>
        <many-to-one name="exame" class="com.persistencia.exame.Exame">
            <column name="Exame_CODEXA" not-null="true"/>
        </many-to-one>             
        <many-to-one name="pixeldata" class="com.persistencia.pixeldata.PixelData"
            column="Pixeldata_CODPIX" 
            not-null="true"
            cascade="all"
            unique="true"/>        
    </class>
</hibernate-mapping>
Classe Seccapt:
package com.persistencia.seccapt;

import java.io.Serializable;
import com.persistencia.exame.Exame;
import com.persistencia.pixeldata.PixelData;

public class Seccapt implements Serializable
{
     private Long      codima;
     private Exame     exame;
     private PixelData pixeldata;
    
    public Seccapt() {
    }   
    
    public Seccapt(Long codima) {
        this.codima = codima;
    }

	public Long getCodima() {
		return codima;
	}

	public void setCodima(Long codima) {
		this.codima = codima;
	}

	public Exame getExame() {
		return exame;
	}

	public void setExame(Exame exame) {
		this.exame = exame;
	}

	public PixelData getPixeldata() {
		return pixeldata;
	}

	public void setPixeldata(PixelData pixeldata) {
		this.pixeldata = pixeldata;
	}
}
Seccapt.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="com.persistencia.seccapt.Seccapt" table="seccapt" lazy="true">
        <id name="codima" type="long">
            <column name="CODIMA" />
            <generator class="increment" />
        </id>
        <many-to-one name="exame" class="com.persistencia.exame.Exame">
            <column name="Exame_CODEXA" not-null="true"/>
        </many-to-one>
        <many-to-one name="pixeldata" class="com.persistencia.pixeldata.PixelData"
            column="Pixeldata_CODPIX" 
            not-null="true"
            cascade="all"
            unique="true"/>                      
    </class>
</hibernate-mapping>
Classe Xa:
package com.persistencia.xa;

import java.io.Serializable;
import com.persistencia.exame.Exame;
import com.persistencia.pixeldata.PixelData;

public class Xa implements Serializable
{
     private Long      codima;
     private Exame     exame;
     private PixelData pixeldata;
     
    public Xa() {
    }
    
    public Xa(Long codima) {
        this.codima = codima;
    }
    
	public Long getCodima() {
		return codima;
	}

	public void setCodima(Long codima) {
		this.codima = codima;
	}

	public Exame getExame() {
		return exame;
	}

	public void setExame(Exame exame) {
		this.exame = exame;
	}

	public PixelData getPixeldata() {
		return pixeldata;
	}

	public void setPixeldata(PixelData pixeldata) {
		this.pixeldata = pixeldata;
	}
	
}
Xa.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="com.persistencia.xa.Xa" table="xa" lazy="true">
        <id name="codima" type="long">
            <column name="CODIMA" />
            <generator class="increment" />
        </id>
        <many-to-one name="exame" class="com.persistencia.exame.Exame">
            <column name="Exame_CODEXA" not-null="true"/>
        </many-to-one>
        <many-to-one name="pixeldata" class="com.persistencia.pixeldata.PixelData"
            column="Pixeldata_CODPIX" 
            not-null="true"
            cascade="all"
            unique="true"/>        
    </class>
</hibernate-mapping>

6 Respostas

_fs

Estranho, olhei os mapeamentos várias vezes mas não encontrei a propriedade duplicada.

Está utilizando o Hibernate 3.2?

U

Uso o Hibernate 3.0

_fs

Hm, se não me engano no 3.2 esta exceção mostra mais detalhes como o nome da propriedade duplicada e em qual entidade o problema ocorreu.

_fs

E agora eu vi, está faltando o mapeamento da classe PixelData.

U

Abaixo segue o erro exibido pelo Hibernate 3.2:

org.hibernate.InvalidMappingException: Could not parse mapping document from resource com/persistencia/ct/Ct.hbm.xml

	at org.hibernate.cfg.Configuration.addResource(Configuration.java:569)
	at org.hibernate.cfg.Configuration.parseMappingElement(Configuration.java:1584)
	at org.hibernate.cfg.Configuration.parseSessionFactory(Configuration.java:1552)
	at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1531)
	at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1505)
	at org.hibernate.cfg.Configuration.configure(Configuration.java:1425)
	at org.hibernate.cfg.Configuration.configure(Configuration.java:1411)
	at com.sismed.persistencia.HibernateUtil.<clinit>(HibernateUtil.java:27)
	at com.sismed.controle.ControleLogin.<init>(ControleLogin.java:13)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
	at java.lang.reflect.Constructor.newInstance(Unknown Source)
	at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:100)
	at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:76)
	at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:49)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:316)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:226)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:147)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:275)
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:317)
	at org.springframework.web.context.support.AbstractRefreshableWebApplicationContext.refresh(AbstractRefreshableWebApplicationContext.java:134)
	at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:305)
	at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:250)
	at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:219)
	at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:111)
	at javax.servlet.GenericServlet.init(GenericServlet.java:211)
	at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1091)
	at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:925)
	at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:3857)
	at org.apache.catalina.core.StandardContext.start(StandardContext.java:4118)
	at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:759)
	at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:739)
	at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:524)
	at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:589)
	at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:536)
	at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:471)
	at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1102)
	at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
	at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1020)
	at org.apache.catalina.core.StandardHost.start(StandardHost.java:718)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1012)
	at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:442)
	at org.apache.catalina.core.StandardService.start(StandardService.java:450)
	at org.apache.catalina.core.StandardServer.start(StandardServer.java:683)
	at org.apache.catalina.startup.Catalina.start(Catalina.java:537)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:271)
	at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:409)
Caused by: org.hibernate.MappingException: property mapping must defined a name attribute [com.persistencia.ct.Ct]
	at org.hibernate.cfg.HbmBinder.createProperty(HbmBinder.java:2161)
	at org.hibernate.cfg.HbmBinder.createClassProperties(HbmBinder.java:2141)
	at org.hibernate.cfg.HbmBinder.createClassProperties(HbmBinder.java:2031)
	at org.hibernate.cfg.HbmBinder.bindRootPersistentClassCommonValues(HbmBinder.java:359)
	at org.hibernate.cfg.HbmBinder.bindRootClass(HbmBinder.java:273)
	at org.hibernate.cfg.HbmBinder.bindRoot(HbmBinder.java:144)
	at org.hibernate.cfg.Configuration.add(Configuration.java:669)
	at org.hibernate.cfg.Configuration.addInputStream(Configuration.java:504)
	at org.hibernate.cfg.Configuration.addResource(Configuration.java:566)
_fs

Ainda não achei o erro -_-

De qualquer forma, por que usa duas notações diferentes para declarar o many-to-one na mesma classe?
Assim:

<many-to-one name="exame" class="com.persistencia.exame.Exame">
    <column name="Exame_CODEXA" not-null="true"/>
</many-to-one>

E assim:

<many-to-one name="pixeldata" class="com.persistencia.pixeldata.PixelData"
        column="Pixeldata_CODPIX" 
        not-null="true"
        cascade="all"
        unique="true"/>
Criado 12 de dezembro de 2006
Ultima resposta 12 de dez. de 2006
Respostas 6
Participantes 2