2011-09-19 57 views
0

您好,我正在使用MYSQL和Hibernate,并有一个表Customer具有默认值为1的customer_type列,其外键在Customer中,但CustomerType表中的主键查找下面的代码在我的客户HBM文件我已经写了下面的代码:如何将默认值设置为休眠关系

<many-to-one name="customerType" class="CustomerType" lazy="false"> 
    <column name="customer_type_id" not-null="true"/> 
</many-to-one> 

但该列不为空,并在我的表的默认值是1,并同时节省了我的客户对象becos默认值是有我没有设置此对象在表中,但获得异常propertyviolationexception不空引用null值我怎么能过来这个问题,以及如何设置默认值休眠关系

回答

0
As per SQL default value will be set when you omit the column in insert script. 

它的工作方式与Hibernate一样,最终通过在HBM中包含每个映射的列来执行插入脚本。一种方法是使用默认值为CustomerType创建一个对象。然后在保存父对象时将其设置为您的父对象,如果这不是由您的任何业务逻辑设置的。所以,保存没有任何异常。

其他简单方法是在多对一映射集insert='false'中映射一个用于customer_type_id列的基本类型字段并将值设置为1。所以,这个人会被保存到数据库的默认值列,当检索关系将愉快加载。

+0

嗨Pokuri,感谢ü为您的宝贵建议其工作正常,我知道的第一种方法和不知道第二个非常感谢你 – indu

0

您强制将您的字段customer_type_id设置为非空,因此hibernate会使用其最低值初始化该值。如果你想用默认值预置您的ID,在Hibernate映射使用下面的代码CustomerType类:

<propery name="customerTypeId" type="long" column="customer_type_id"> 
    <column=" name="customer_type_id" not-null="true" default="1000"/> 
</property>