这是我在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;
}
}
我会感激你的帮助。提前致谢
答案 0 :(得分:0)
你的TipoSensor课程存在吗?映射hibernate找不到你的类