0

Hibernate 学习hibernate是一项艰苦的工作!这个错误告诉我休眠:

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

当我试图访问财产时。

我有这个关系:1 个项目有 N 个用户(只有 1 个用户可以负责)和 N 个用户 1 个数据信息(姓名、姓氏、电子邮件)。

在此处输入图像描述

我正在使用 myeclipse,这产生了我的 hbm 和 pojo,我正在查看这些信息,对我来说没关系。

项目 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);

项目.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);

并详细说明proyect.jsp 尝试访问“idusuarioPersonales”

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

为什么我无法访问此属性?如果地图关联3类

4

1 回答 1

0

usrProyectos是一个Set。您需要在 JSP 中对其进行迭代,然后访问其属性。

于 2013-10-23T04:08:52.753 回答