category.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.news.vo.Category" table="N_category">
<id name="cyID" type="integer">
<column name="CY_ID" length="4"></column>
<generator class="identity"></generator>
</id>
<property name="cyName">
<column name="CY_Name"></column>
</property>
<property name="cyContent">
<column name="CY_Content"></column>
</property>
<property name="cySerial">
<column name="CY_Serial"></column>
</property>


<set name="news" inverse="true" cascade="all" lazy="false">
<key column="N_cyID"></key>
<one-to-many class="com.news.vo.NewsVO"/>
</set>


<!-- 多对一关联,name=关联的属性。colum=数据库对应的列名,主外键列。
 class=关联的Vo类的路径 lazy=是否延迟加载,默认为proxy。为proxy时主表数据则不会加载 -->
 
<many-to-one name="cid" column="C_ID" class="com.news.vo.Column" lazy="false"></many-to-one>
</class>
</hibernate-mapping>
enclosure.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.news.vo.Enclosure" table="N_enclosure">
<id name="eid" type="integer">
<column name="EN_ID" length="4"></column>
<generator class="identity"></generator>
</id>
<property name="oldName">
<column name="EN_oldName"></column>
</property>
<property name="newName">
<column name="EN_newName"></column>
</property>


<many-to-one name="enid" column="EN_nid" class="com.news.vo.NewsVO"></many-to-one>
</class>
</hibernate-mapping>
culomn.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.news.vo.Column" table="N_column">
<id name="cid" type="integer">
<column name="C_ID" length="4"></column>
<generator class="identity"></generator>
</id>
<property name="cname">
<column name="C_Name" ></column>
</property>
<property name="ccontext">
<column name="C_Context"></column>
</property>
<property name="cserial">
<column name="C_Serial"></column>
</property>

<set name="category" inverse="true" cascade="all" lazy="false">
<key column="C_ID"></key>
<one-to-many class="com.news.vo.Category"/>
</set>
</class></hibernate-mapping>
news.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.news.vo.NewsVO" table="N_news">
<id name="nid" type="integer">
<column name="N_ID" length="4"></column>
<generator class="identity"></generator>
</id>
<property name="ntitle">
<column name="N_Title"></column>
</property>
<property name="nfrom">
<column name="N_From"></column>
</property>
<property name="npublisher">
<column name="N_Publisher"></column>
</property>
<property name="ndate">
<column name="N_Date"></column>
</property>
<property name="ncontext">
<column name="N_Context"></column>
</property>


<set name="enclosure" inverse="true" cascade="all" lazy="false">
<key column="EN_nid"></key>
<one-to-many class="com.news.vo.Enclosure"/>
</set>

<many-to-one name="cyid" column="N_cyID" class="com.news.vo.Category" lazy="false"></many-to-one>
</class>
</hibernate-mapping>请问之间的映射关系有什么问题吗?

解决方案 »

  1.   

    column-->1对M-->category;category-->M对1-->column
    category-->1对M-->newsVO;newsVO-->M对1-->category
    newsVO-->1对M-->enclosure;enclosure-->M对1-->newsVO
    是这样的关系吗?
      

  2.   

    Category.java(get set方法省略)
    public class Category extends IVo {
    private Integer cyID;//类别id
    private String cyName;//类别名称 private String cyContent;//类别描述
    private Integer cySerial;//类别序列

    private Column cid;//栏目ID

    private Set<NewsVO> news;
    Column.java
    public class Column extends IVo {
    private Integer cid;//栏目ID
    private String cname;//栏目名称
    private String ccontext;//栏目描述
    private Integer cserial;//栏目序列

    private Set<Category> category;
    Enclosure.java
    public class Enclosure extends IForm {
    private Integer eid;
    private String oldName;
    private String newName;

    private NewsVO enid;
    NewsVo.java
    public class NewsVO extends IVo {
    private Integer nid;//ID
    private String ntitle;//新闻标题
    private String nfrom;//来源
    private String npublisher;//发布人
    private String  ndate;//发布日期
    private String ncontext;//新闻内容

    private Category cyid;//类别id

    private Set<Enclosure> enclosure;
      

  3.   

    在数据库没有数据的时候页面都显示正常,添加数据到Category表就提示org.hibernate.exception.GenericJDBCException: could not initialize a collection: [com.news.vo.Column.category#80]