2012-08-06 4 views
0

이것은 Stackoverflow의 첫 번째 질문입니다. 나는 분명히 희망한다. 나는 Hibernate 매핑에 문제가있어 어디에서 오류인지 알지 못한다. 내가org.hibernate.MappingException 받기

from Sensor 

같은 HQL을 실행하려고 할 때 나는 openjdk6, hibernet 3.2.5 및 MySQL 데이터베이스와 넷빈즈 7에서 일하고 있어요 다음과 같은 예외를

org.hibernate.MappingException: Association references unmapped class: sipiaHibernate.TipoSensor 
at org.hibernate.cfg.HbmBinder.bindCollectionSecondPass(HbmBinder.java:2380) 
at org.hibernate.cfg.HbmBinder$CollectionSecondPass.secondPass(HbmBinder.java:2662) 
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:324) 
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1286) 
at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:859) 

를 얻을. 나는 모든 POJO의 클래스를 sipiaHibernate 패키지에 포함하고있다. 구성 파일에 언급 된 모든 테이블이 내 데이터베이스에 있습니다. netbeans hibernet 유틸리티를 사용하여 POJO 클래스 & 매핑 파일을 생성했습니다.

있는 hibernate.cfg.xml

<?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="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> 
    <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> 
    <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/gatewaysipia</property> 
    <property name="hibernate.connection.username">root</property> 
    <property name="hibernate.connection.password">xxxxxxxxx</property> 
    <property name="hibernate.show_sql">true</property> 
    <property name="hibernate.current_session_context_class">thread</property> 
    <property name="hibernate.query.factory_class">org.hibernate.hql.classic.ClassicQueryTranslatorFactory</property> 
    <property name="hibernate.jdbc.batch_size">0</property> 
    <mapping resource="sipiaHibernate/TipoSensor.hbm.xml"/> 
    <mapping resource="sipiaHibernate/Mote.hbm.xml"/> 
    <mapping resource="sipiaHibernate/LogDataInd.hbm.xml"/> 
    <mapping resource="sipiaHibernate/ModeloSensor.hbm.xml"/> 
    <mapping resource="sipiaHibernate/Usuario.hbm.xml"/> 
    <mapping resource="sipiaHibernate/Proyecto.hbm.xml"/> 
    <mapping resource="sipiaHibernate/DatosProyecto.hbm.xml"/> 
    <mapping resource="sipiaHibernate/ServerVariables.hbm.xml"/> 
    <mapping resource="sipiaHibernate/LogMoteStart.hbm.xml"/> 
    <mapping resource="sipiaHibernate/Sensor.hbm.xml"/> 
    <mapping resource="sipiaHibernate/SensorConstantes.hbm.xml"/> 
    </session-factory> 
</hibernate-configuration> 

hibernate.reveng.xml

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE hibernate-reverse-engineering PUBLIC "-//Hibernate/Hibernate Reverse Engineering DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-reverse-engineering-3.0.dtd"> 
<hibernate-reverse-engineering> 
    <schema-selection match-catalog="gatewaysipia"/> 
    <table-filter match-name="modelo_sensor"/> 
    <table-filter match-name="server_variables"/> 
    <table-filter match-name="log_mote_start"/> 
    <table-filter match-name="mote"/> 
    <table-filter match-name="datos_proyecto"/> 
    <table-filter match-name="proyecto_has_usuario"/> 
    <table-filter match-name="tipo_sensor"/> 
    <table-filter match-name="log_data_ind"/> 
    <table-filter match-name="usuario"/> 
    <table-filter match-name="sensor_constantes"/> 
    <table-filter match-name="sensor"/> 
    <table-filter match-name="proyecto"/> 
</hibernate-reverse-engineering> 

매핑 XML 파일은 다음과 같습니다

Sensor.hbm.xml

<!-- language: lang-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"> 
<!-- Generated 06/08/2012 18:34:16 by Hibernate Tools 3.2.1.GA --> 
<hibernate-mapping> 
    <class name="sipiaHibernate.Sensor" table="sensor" catalog="gatewaysipia"> 
     <id name="idsensor" type="java.lang.Long"> 
      <column name="idsensor" /> 
      <generator class="identity" /> 
     </id> 
     <many-to-one name="modeloSensor" class="sipiaHibernate.ModeloSensor" fetch="select"> 
      <column name="modelo_sensor_idmodelo_sensor" not-null="true" /> 
     </many-to-one> 
     <many-to-one name="mote" class="sipiaHibernate.Mote" fetch="select"> 
      <column name="mote_idMote" not-null="true" /> 
     </many-to-one> 
     <many-to-one name="proyecto" class="sipiaHibernate.Proyecto" fetch="select"> 
      <column name="proyecto_idproyecto" /> 
     </many-to-one> 
     <property name="dirSensor" type="short"> 
      <column name="dir_sensor" not-null="true"> 
       <comment>el nro de entrada analogica/digital a la cual el sensor esta conectado en el mote</comment> 
      </column> 
     </property> 
     <property name="etiqueta" type="string"> 
      <column name="etiqueta" length="100" not-null="true"> 
       <comment>etiqueta/label dada por el usuario</comment> 
      </column> 
     </property> 
     <property name="ubicacion" type="string"> 
      <column name="ubicacion" length="100" not-null="true"> 
       <comment>ubicacion texto libre dada por el usuario</comment> 
      </column> 
     </property> 
     <property name="gpsLatitud" type="big_decimal"> 
      <column name="gps_latitud" precision="8" scale="6" /> 
     </property> 
     <property name="gpsLongitud" type="big_decimal"> 
      <column name="gps_longitud" precision="8" scale="6" /> 
     </property> 
     <property name="estadoSensor" type="string"> 
      <column name="estado_sensor" length="9" not-null="true" /> 
     </property> 
     <set name="datosProyectos" inverse="true"> 
      <key> 
       <column name="sensor_idsensor" not-null="true" /> 
      </key> 
      <one-to-many class="sipiaHibernate.DatosProyecto" /> 
     </set> 
    </class> 
</hibernate-mapping> 

ModeloSensor.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"> 
<!-- Generated 06/08/2012 18:34:16 by Hibernate Tools 3.2.1.GA --> 
<hibernate-mapping> 
    <class name="sipiaHibernate.ModeloSensor" table="modelo_sensor" catalog="gatewaysipia"> 
     <id name="idmodeloSensor" type="java.lang.Long"> 
      <column name="idmodelo_sensor" /> 
      <generator class="identity" /> 
     </id> 
     <many-to-one name="tipoSensor" entity-name="sipiaHibernate.TipoSensor" class="sipiaHibernate.TipoSensor" fetch="select"> 
      <column name="tipo_sensor_idtipo_sensor" not-null="true" /> 
     </many-to-one> 
     <property name="descripcionModelo" type="string"> 
      <column name="descripcion_modelo" length="100"> 
       <comment>Indica el modelo del sensor, por ej, PT100, etc</comment> 
      </column> 
     </property> 
     <set name="tipoSensors" inverse="true"> 
      <key> 
       <column name="idtipo_sensor" not-null="true" unique="true" /> 
      </key> 
      <one-to-many class="sipiaHibernate.TipoSensor" /> 
     </set> 
     <set name="sensors" inverse="true"> 
      <key> 
       <column name="modelo_sensor_idmodelo_sensor" not-null="true" /> 
      </key> 
      <one-to-many entity-name="sipiaHibernate.Sensor" class="sipiaHibernate.Sensor" /> 
     </set> 
    </class> 
</hibernate-mapping> 

TipoSensor.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"> 
<!-- Generated 06/08/2012 18:34:16 by Hibernate Tools 3.2.1.GA --> 
<hibernate-mapping> 
    <class name="sipiaHibernate.TipoSensor" table="tipo_sensor" catalog="gatewaysipia"> 
     <id name="idtipoSensor" type="java.lang.Long"> 
      <column name="idtipo_sensor" /> 
      <generator class="identity" /> 
     </id> 
     <many-to-one name="modeloSensor" class="sipiaHibernate.ModeloSensor" update="false" insert="false" fetch="select"> 
      <column name="idtipo_sensor" not-null="true" unique="true" /> 
     </many-to-one> 
     <property name="tipoDescripcion" type="string"> 
      <column name="tipo_descripcion" length="45" /> 
     </property> 
     <property name="unidad" type="string"> 
      <column name="unidad" length="45" /> 
     </property> 
     <property name="valorMinimo" type="java.lang.Float"> 
      <column name="valor_minimo" precision="12" scale="0" /> 
     </property> 
     <property name="valorMaximo" type="java.lang.Float"> 
      <column name="valor_maximo" precision="12" scale="0" /> 
     </property> 
     <set name="modeloSensors" inverse="true"> 
      <key> 
       <column name="tipo_sensor_idtipo_sensor" not-null="true"/> 
      </key> 
      <one-to-many entity-name="sipiaHibernate.ModeloSensor" class="sipiaHibernate.ModeloSensor" /> 
     </set> 
    </class> 
</hibernate-mapping> 

센서 POJO 클래스

package sipiaHibernate; 
// Generated 06/08/2012 18:34:16 by Hibernate Tools 3.2.1.GA 

import java.math.BigDecimal; 
import java.util.HashSet; 
import java.util.Set; 

/** 
* Sensor generated by hbm2java 
*/ 
public class Sensor implements java.io.Serializable { 


    private Long idsensor; 
    private ModeloSensor modeloSensor; 
    private Mote mote; 
    private Proyecto proyecto; 
    private short dirSensor; 
    private String etiqueta; 
    private String ubicacion; 
    private BigDecimal gpsLatitud; 
    private BigDecimal gpsLongitud; 
    private String estadoSensor; 
    private Set datosProyectos = new HashSet(0); 

    public Sensor() { 
    } 


    public Sensor(ModeloSensor modeloSensor, Mote mote, short dirSensor, String etiqueta, String ubicacion, String estadoSensor) { 
     this.modeloSensor = modeloSensor; 
     this.mote = mote; 
     this.dirSensor = dirSensor; 
     this.etiqueta = etiqueta; 
     this.ubicacion = ubicacion; 
     this.estadoSensor = estadoSensor; 
    } 
    public Sensor(ModeloSensor modeloSensor, Mote mote, Proyecto proyecto, short dirSensor, String etiqueta, String ubicacion, BigDecimal gpsLatitud, BigDecimal gpsLongitud, String estadoSensor, Set datosProyectos) { 
     this.modeloSensor = modeloSensor; 
     this.mote = mote; 
     this.proyecto = proyecto; 
     this.dirSensor = dirSensor; 
     this.etiqueta = etiqueta; 
     this.ubicacion = ubicacion; 
     this.gpsLatitud = gpsLatitud; 
     this.gpsLongitud = gpsLongitud; 
     this.estadoSensor = estadoSensor; 
     this.datosProyectos = datosProyectos; 
    } 

    public Long getIdsensor() { 
     return this.idsensor; 
    } 

    public void setIdsensor(Long idsensor) { 
     this.idsensor = idsensor; 
    } 
    public ModeloSensor getModeloSensor() { 
     return this.modeloSensor; 
    } 

    public void setModeloSensor(ModeloSensor modeloSensor) { 
     this.modeloSensor = modeloSensor; 
    } 
    public Mote getMote() { 
     return this.mote; 
    } 

    public void setMote(Mote mote) { 
     this.mote = mote; 
    } 
    public Proyecto getProyecto() { 
     return this.proyecto; 
    } 

    public void setProyecto(Proyecto proyecto) { 
     this.proyecto = proyecto; 
    } 
    public short getDirSensor() { 
     return this.dirSensor; 
    } 

    public void setDirSensor(short dirSensor) { 
     this.dirSensor = dirSensor; 
    } 
    public String getEtiqueta() { 
     return this.etiqueta; 
    } 

    public void setEtiqueta(String etiqueta) { 
     this.etiqueta = etiqueta; 
    } 
    public String getUbicacion() { 
     return this.ubicacion; 
    } 

    public void setUbicacion(String ubicacion) { 
     this.ubicacion = ubicacion; 
    } 
    public BigDecimal getGpsLatitud() { 
     return this.gpsLatitud; 
    } 

    public void setGpsLatitud(BigDecimal gpsLatitud) { 
     this.gpsLatitud = gpsLatitud; 
    } 
    public BigDecimal getGpsLongitud() { 
     return this.gpsLongitud; 
    } 

    public void setGpsLongitud(BigDecimal gpsLongitud) { 
     this.gpsLongitud = gpsLongitud; 
    } 
    public String getEstadoSensor() { 
     return this.estadoSensor; 
    } 

    public void setEstadoSensor(String estadoSensor) { 
     this.estadoSensor = estadoSensor; 
    } 
    public Set getDatosProyectos() { 
     return this.datosProyectos; 
    } 

    public void setDatosProyectos(Set datosProyectos) { 
     this.datosProyectos = datosProyectos; 
    } 

} 

TipoSensor POJO 클래스

package sipiaHibernate; 
// Generated 23/08/2012 15:10:47 by Hibernate Tools 3.2.1.GA 


import java.util.HashSet; 
import java.util.Set; 

/** 
* TipoSensor generated by hbm2java 
*/ 
public class TipoSensor implements java.io.Serializable { 


    private Long idtipoSensor; 
    private ModeloSensor modeloSensor; 
    private String tipoDescripcion; 
    private String unidad; 
    private Float valorMinimo; 
    private Float valorMaximo; 
    private Set modeloSensors = new HashSet(0); 

    public TipoSensor() { 
    } 


    public TipoSensor(ModeloSensor modeloSensor) { 
     this.modeloSensor = modeloSensor; 
    } 
    public TipoSensor(ModeloSensor modeloSensor, String tipoDescripcion, String unidad, Float valorMinimo, Float valorMaximo, Set modeloSensors) { 
     this.modeloSensor = modeloSensor; 
     this.tipoDescripcion = tipoDescripcion; 
     this.unidad = unidad; 
     this.valorMinimo = valorMinimo; 
     this.valorMaximo = valorMaximo; 
     this.modeloSensors = modeloSensors; 
    } 

    public Long getIdtipoSensor() { 
     return this.idtipoSensor; 
    } 

    public void setIdtipoSensor(Long idtipoSensor) { 
     this.idtipoSensor = idtipoSensor; 
    } 
    public ModeloSensor getModeloSensor() { 
     return this.modeloSensor; 
    } 

    public void setModeloSensor(ModeloSensor modeloSensor) { 
     this.modeloSensor = modeloSensor; 
    } 
    public String getTipoDescripcion() { 
     return this.tipoDescripcion; 
    } 

    public void setTipoDescripcion(String tipoDescripcion) { 
     this.tipoDescripcion = tipoDescripcion; 
    } 
    public String getUnidad() { 
     return this.unidad; 
    } 

    public void setUnidad(String unidad) { 
     this.unidad = unidad; 
    } 
    public Float getValorMinimo() { 
     return this.valorMinimo; 
    } 

    public void setValorMinimo(Float valorMinimo) { 
     this.valorMinimo = valorMinimo; 
    } 
    public Float getValorMaximo() { 
     return this.valorMaximo; 
    } 

    public void setValorMaximo(Float valorMaximo) { 
     this.valorMaximo = valorMaximo; 
    } 
    public Set getModeloSensors() { 
     return this.modeloSensors; 
    } 

    public void setModeloSensors(Set modeloSensors) { 
     this.modeloSensors = modeloSensors; 
    } 




} 

나는 당신의 도움을 주셔서 감사하겠습니다. 미리 감사드립니다.

+1

'센서'클래스를 표시하면 패키지가 잘못되었을 수 있습니다. –

+0

센서 클래스가 추가되었습니다. – justanita

+0

누군가 해결책이나 진짜 코멘트가 있습니까? – justanita

답변

0

TipoSensor 클래스가 있습니까? 매핑이 동면 클래스를 찾지 못했습니다

+0

예, 위에서 언급 한 모든 수업이 있습니다. 아마도 오류가 * .hbm.xml 매핑 파일에 있다고 생각하기 때문에 나는 그 파일을 게시물에 추가하지 않았습니다. – justanita

+0

모든 POJO의 클래스는 sipiaHibernate 패키지에 있어야하며 데이터베이스에는 테이블 sensor, modelo_sensor 및 tipo_sensor (* .hbm.xml의 매개 변수 테이블 이름이 있어야 함)가 있어야합니다. 감사합니다 – esmoreno

+0

언급 된 모든 테이블은 DB에 있고 모든 POJO의 클래스는 sipiaHibernate 패키지에 있습니다. – justanita

관련 문제