获取org.hibernate.MappingException

时间:2012-08-06 22:35:53

标签: java hibernate hql hibernate-mapping

这是我在Stackoverflow中的第一个问题。我希望能够清楚。我在使用Hibernate映射时遇到了麻烦,而且我不知道错误在哪里。当我尝试运行像

这样的HQL时
from Sensor

我收到以下异常

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)

我正在使用openjdk6,hibernet 3.2.5和MySQL数据库处理netbeans 7。我在包sipiaHibernate中拥有所有POJO类。配置文件中提到的所有表都在我的数据库中。我生成了POJO类和&使用netbeans hibernet实用程序的映射文件。

的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 Class

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 :(得分:0)

你的TipoSensor课程存在吗?映射hibernate找不到你的类