hibernate能为外键设置默认值吗?

luobaolin2009 2009-03-23 01:36:44
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来表示加的是根类别.
但是我想最好是可以有个默认值那就最好了,
...全文
187 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
luobaolin2009 2009-03-23
  • 打赏
  • 举报
回复
恩,直接在类中加个Boolean类型的属性,给他一个初始化的值为false,也就是不是根类别,谢谢,
Jacky_Zhu_1983 2009-03-23
  • 打赏
  • 举报
回复
<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"

Jacky_Zhu_1983 2009-03-23
  • 打赏
  • 举报
回复
hbm.xml文件对应不有个java类的嘛
在这个类里,给对应的属性赋默认值不就行了

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧