我有个项目类:   projrectvo  
有个项目状态类: billstatusvo//项目类: ProjectVO
         private String billno;//项目编码
private String name;//项目名称
         private String billstatus;//项目状态
private BillStatusVO billstatusvo;项目状态类: Billstatusvo
         private Integer statusid;//项目状态
private String statusname;//项目状态名称
private String note;//备注项目类里面的项目状态 引用 项目状态的里面的。现在就是不知道 每只many-to-one 在project里面怎么配值。
我是在要查询项目信息的时候,把项目状态表的名字现实出来,现在只是主外键关联。  请高手帮我配置下,我自己弄错了。 很郁闷..... 
我叫月月姐,麻烦您了 谢谢。

解决方案 »

  1.   


    <many-to-one name="billstatusvo"
    class="BillStatusVO类的路径" fetch="select" lazy="false">
    <column name="statusid" precision="22" scale="0"
    not-null="true" />
    </many-to-one>
    试试
      

  2.   

    %%%% Error Creating SessionFactory %%%%
    org.hibernate.MappingException: Duplicate property mapping of billstatusvo found in com.chceg.vo.ProjectVO
    at org.hibernate.mapping.PersistentClass.checkPropertyDuplication(PersistentClass.java:459)
    at org.hibernate.mapping.PersistentClass.validate(PersistentClass.java:449)
    at org.hibernate.mapping.RootClass.validate(RootClass.java:192)
    at org.hibernate.cfg.Configuration.validate(Configuration.java:1102)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1287)
    at com.chceg.util.HibernateSessionFactory.<clinit>(HibernateSessionFactory.java:31)
    at com.chceg.dao.AbstractDAO.getSession(AbstractDAO.java:145)报了一个错误
      

  3.   


    大概是这样:项目类xml:<hibernate-mapping>
    <class name="项目类"
    table="项目表名" schema="数据库schema">
    <id name="id" type="java.lang.Long">
    <column name="id编号字段" precision="22" scale="0" />
    <generator class="sequence">
    <param name="sequence">项目表的序列</param>
    </generator>
    </id>
    <many-to-one name="billstatusvo"
    class="BillStatusVO类名" fetch="select" lazy="false">
    <column name="statusid对应数据库字段" precision="22" scale="0"
    not-null="true" />
    </many-to-one>
    <property name="billno" type="java.lang.String">
    <column name="billno对应数据库字段" length="20" />
    </property>
    <property name="name" type="java.lang.String">
    <column name="name对应数据库字段" length="50" />
    </property>
    </class>
    </hibernate-mapping>状态类xml:
    首先需要在状态类中加一个属性:private Set projrectvos = new HashSet(0);及get/set方法.<hibernate-mapping>
    <class name="项目状态类"
    table="项目状态表名" schema="数据库schema">
    <id name="id" type="java.lang.Long">
    <column name="id编号字段" precision="22" scale="0" />
    <generator class="sequence">
    <param name="sequence">项目状态表的序列</param>
    </generator>
    </id>
    <property name="statusname" type="java.lang.String">
    <column name="statusname对应数据库字段" length="50" />
    </property>
    <property name="note" type="java.lang.String">
    <column name="note对应数据库字段" length="50" />
    </property>
    <set name="projrectvos" inverse="true" cascade="all">
    <key>
    <column name="statusid对应数据库字段" precision="22" scale="0"
    not-null="true" />
    </key>
    <one-to-many class="项目类名" />
    </set>
    </class>
    </hibernate-mapping>你看看适当的调整一下。。你的两个类,我都不知道id字段有没有。。也可以将statusid替换为id。。根据你自己的表的情况
      

  4.   


    Myeclipse可以自动生成
    Eclipse需要自己写
      

  5.   

    用myeclipse 自动生成一下,复制过去
      

  6.   

      <many-to-one name="billstatusvo" cascade="save-update" outer-join="auto"
                class="Billstatusvo包下的类名">
                <column name="projrectvo表引用billstatusvo表的外键字段" />
    </many-to-one>
      

  7.   

    <many-to-one name="billstatusvo" class="Billstatusvo包下的类名" fetch="select" lazy="false">
                <column name="数据库中的字段名"  />
    </many-to-one>我觉得重要的是 lazy="false" 因为你想掉用Billstatusvo里面的名字而已啊 设置懒加载试下啊
      

  8.   

    用Myeclipse自动生成吧,然后直接复制过去。
      

  9.   

    好吧,我承认我是因为看到是个女生发的,才看的。应该只配many to one就可以。
      

  10.   

    hibernary可以自动生成实体和配置主外键关联
      

  11.   

    你报的这个错误信息是创建sessionFactory失败,你的这个是自动生成的一个util类吧,检查一下你的hibernate.cfg.xml配置文件对不对。
      

  12.   

    Myeclipse可以自动生成
    Eclipse需要自己写