2013-10-22 40 views
0

Hibernate學習hibernate是一項艱苦的工作!這個錯誤告訴我休眠:在類型org.hibernate.collection.PersistentSet上找不到屬性'xxx'Hibernate

 javax.el.PropertyNotFoundException: Property 'usuarioPersonal' not found on type org.hibernate.collection.PersistentSet 

當我試圖訪問屬性。

我有這樣一個關係:1個項目有N個用戶(只有1個用戶可以回覆)和N個用戶1個數據信息(姓名,姓氏,電子郵件)。

enter image description here

I'm MyEclipse的使用,這產生我的HBM和POJO,I'm查看此信息對我很確定。

項目DTO

public class Proyecto implements java.io.Serializable { 

// Fields 

private Integer idproyecto; 
private String nombre; 
private Integer creadoPor; 
private Timestamp inicia; 
private Timestamp finaliza; 
private Timestamp fecha; 
private Integer estatus; 
private Set tareas = new HashSet(0); 
private Set usrProyectos = new HashSet(0); 

UsrProyectoDTO

public class UsrProyecto implements java.io.Serializable { 

// Fields 

private Integer idproyecto; 
private UsuarioPersonal usuarioPersonal; 
private Proyecto proyecto; 
private Short estatus; 
private Integer responsable; 

UsuarioPersona DTO

public class UsuarioPersonal implements java.io.Serializable { 

// Fields 

private Integer idusuarioPersonales; 
private CtgPuesto ctgPuesto; 
private String nombre; 
private String paterno; 
private String materno; 
private Timestamp fecha; 
private Set usrProyectos = new HashSet(0); 

Proyecto.hbm.xml

<class name="com.bsd.projects.capadatos.dto.Proyecto" table="proyecto" catalog="bsd_proyectos"> 
    <id name="idproyecto" type="java.lang.Integer"> 
     <column name="idproyecto" /> 
     <generator class="identity" /> 
    </id> 
    <property name="nombre" type="java.lang.String"> 
     <column name="nombre" length="45" /> 
    </property> 
    <property name="creadoPor" type="java.lang.Integer"> 
     <column name="creado_por" /> 
    </property> 
    <property name="inicia" type="java.sql.Timestamp"> 
     <column name="inicia" length="0" /> 
    </property> 
    <property name="finaliza" type="java.sql.Timestamp"> 
     <column name="finaliza" length="0" /> 
    </property> 
    <property name="fecha" type="java.sql.Timestamp"> 
     <column name="fecha" length="0" /> 
    </property> 
    <set name="tareas" inverse="true"> 
     <key> 
      <column name="proyecto_id" not-null="true" /> 
     </key> 
     <one-to-many class="com.bsd.projects.capadatos.dto.Tarea" /> 
    </set> 
    <set name="usrProyectos" inverse="true"> 
     <key> 
      <column name="proyecto_id" not-null="true" /> 
     </key> 
     <one-to-many class="com.bsd.projects.capadatos.dto.UsrProyecto" /> 
    </set> 
    <property name="estatus" type="java.lang.Integer"> 
     <column name="estatus" /> 
    </property> 
</class> 

UsrProyecto.hbm.xml

<class name="com.bsd.projects.capadatos.dto.UsrProyecto" table="usr_proyecto" catalog="bsd_proyectos"> 
    <id name="idproyecto" type="java.lang.Integer"> 
     <column name="idproyecto" /> 
     <generator class="identity" /> 
    </id> 
    <many-to-one name="usuarioPersonal" class="com.bsd.projects.capadatos.dto.UsuarioPersonal" fetch="select"> 
     <column name="usaurio_personal_id" not-null="true" /> 
    </many-to-one> 
    <many-to-one name="proyecto" class="com.bsd.projects.capadatos.dto.Proyecto" fetch="select"> 
     <column name="proyecto_id" not-null="true" /> 
    </many-to-one> 
    <property name="estatus" type="java.lang.Short"> 
     <column name="estatus" /> 
    </property> 
    <property name="responsable" type="java.lang.Integer"> 
     <column name="responsable" /> 
    </property> 
</class> 

UsuarioPersonal.hbm.xml

<class name="com.bsd.projects.capadatos.dto.UsuarioPersonal" table="usuario_personal" catalog="bsd_proyectos"> 
    <id name="idusuarioPersonales" type="java.lang.Integer"> 
     <column name="idusuario_personales" /> 
     <generator class="identity" /> 
    </id> 
    <many-to-one name="ctgPuesto" class="com.bsd.projects.capadatos.dto.CtgPuesto" fetch="select"> 
     <column name="ctg_puesto_id" not-null="true" /> 
    </many-to-one> 
    <property name="nombre" type="java.lang.String"> 
     <column name="nombre" length="45" /> 
    </property> 
    <property name="paterno" type="java.lang.String"> 
     <column name="paterno" length="45" /> 
    </property> 
    <property name="materno" type="java.lang.String"> 
     <column name="materno" length="45" /> 
    </property> 
    <property name="fecha" type="java.sql.Timestamp"> 
     <column name="fecha" length="0" /> 
    </property> 
    <set name="usrProyectos" inverse="true"> 
     <key> 
      <column name="usaurio_personal_id" not-null="true" /> 
     </key> 
     <one-to-many class="com.bsd.projects.capadatos.dto.UsrProyecto" /> 
    </set> 
</class> 

ProyectoDAO

public Proyecto findById(java.lang.Integer id) { 
    log.debug("getting Proyecto instance with id: " + id); 
    try { 
     Proyecto instance = (Proyecto) getSession().get(
       "com.bsd.projects.capadatos.dto.Proyecto", id); 
     return instance; 
    } catch (RuntimeException re) { 
     log.error("get failed", re); 
     throw re; 
    } 
} 

當我回到我的對象,查看

 request.setAttribute("detalleProyecto",proyecto); 

在detailproyect.jsp嘗試獲得「idusuarioPersonales」

<td>Id Personal:</td><td> <input type="text" value="${detalleProyecto.usrProyectos.usuarioPersonal.idusuarioPersonales}" /> 

爲什麼不容I'm訪問此屬性?如果地圖助理3類

+0

我正在閱讀其他帖子,可能的問題是沒有getter和setter,但不是我的情況 – vljc2004

回答

0

usrProyectosSet。您需要在JSP中遍歷它,然後訪問其屬性。

+0

謝謝,但我返回一個對象Proyecto,我不能迭代 – vljc2004

+0

你應該遍歷'detalleProyecto.usrProyectos ' –

相關問題