Category.java文件
package com.lbl.www.vo;import java.util.Set;/**
 * 产品类别模型
 * @author Administrator
 *
 */
public class Category { //自增id
private int id;
//拥有父类别多对一映射
private Category pcategory;
//拥有的所有子类别,一对多映射
private Set categories;
//所有该类别的产品,一对多映射
private Set products;
//名称
private String cname;
//描述
private String descr;

private int grade;

public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public Category getPcategory() {
return pcategory;
}
public void setPcategory(Category pcategory) {
this.pcategory = pcategory;
}
public String getCname() {
return cname;
}
public void setCname(String cname) {
this.cname = cname;
}
public String getDescr() {
return descr;
}
public void setDescr(String descr) {
this.descr = descr;
}
public int getGrade() {
return grade;
}
public void setGrade(int grade) {
this.grade = grade;
}
public Set getCategories() {
return categories;
}
public void setCategories(Set categories) {
this.categories = categories;
}
public Set getProducts() {
return products;
}
public void setProducts(Set products) {
this.products = products;
}}Category.hbm.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">
<!-- 
    Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping package="com.lbl.www.vo">
   <class name="Category">
   <!-- 主键生成策略 -->
    <id name="id">
    <generator class="native"/>
    </id>
    <property name="cname"/>
    <property name="descr"/>
    <property name="grade"/>
    <!-- 所有该类别的产品 级联删除所有产品-->
    <set name="products" cascade="delete" inverse="true">
    <key column="categoryid"/>
    <one-to-many class="Product"/>
    </set>
    <!-- 级联添加父类别 -->
    <many-to-one name="pcategory" column="pid" cascade="all" />
    <!-- 所有该类别的子类别 级联删除所有子类别-->
    <set name="categories" cascade="delete" inverse="true">
    <key column="pid"/>
    <one-to-many class="Category"/>
    </set>
   </class>
</hibernate-mapping>
我的意思就是想当我添加类别的时候,如果是根类别pid能够默认是0;//这样来判断他是否根类别
不知道hibernate可以不?
如果不行按我的想法,也可以先加入一个根类别祖先类别,第一个加入,也就是id=1;
那么下次我在想加根类别可以先把所有根类别的祖先加载上来然后,设置到没个根类别去,按照这样首先比较麻烦,如果没次添加根类别都要先加载上祖先类别
当然也可以添加一个字段,true来表示加的是根类别.
但是我想最好是可以有个默认值那就最好了,

解决方案 »

  1.   

    hbm.xml文件对应不有个java类的嘛 
    在这个类里,给对应的属性赋默认值不就行了 
      

  2.   

    <property name="viewData" not-null="true" type="boolean">   
        <column name="viewdata" sql-type="number(1); default 0"/>   
    </property> 在sql-type里面定义数据库默认值,那么SchemeExport的时候,DDL就会加上default。然后hbm定义为dynamic-insert="true"和dynamic-update="true" 
      

  3.   

    恩,直接在类中加个Boolean类型的属性,给他一个初始化的值为false,也就是不是根类别,谢谢,