hibernate映射数据库表如何使表中字段默认值生效

 我来答
du瓶邪
推荐于2018-03-11 · TA获得超过2.4万个赞
知道大有可为答主
回答量:1.7万
采纳率:100%
帮助的人:2856万
展开全部

解决方法:
   在hibernate映射文件对数据库表的描述中,在当前字段处加入insert="false"语句,这时hibernate在进行插入操作时,只会为那些有实值的字段赋值,而值为空白的字段就会使用数据库表中定义的默认值了。

举例说明,表person:

CREATE TABLE address (
 i_id int(11) NOT NULL auto_increment,
 c_address varchar(100) NOT NULL default '中国',
 PRIMARY KEY  (id)
)
address.hbm.xml:
<hibernate-mapping package="cn.com.lough.model">
   <class
       name="address "
       table="address "
       lazy="false"
   >
       <meta attribute="sync-DAO">true</meta>
       <cache usage="read-write"/>
       <id
           name="IId"
           type="integer"
           column="i_id"
       >
           <generator class="native"/>
       </id>
       <property
           name="C_Address"
           column="c_address "
           type="string"
           not-null="false"
           length="128"
       />
</hibernate-mapping>
运行程序
public regAddress(String a){   //传入的值a未在网页文本框里获得任何值(家庭地址)
Address p = new Address ();
p.setAddress(a);
HiFactory.save(p);
}
此时hibernate生成的sql语句为insert into person(c_address) values('');
数据库表结果为
i_id   c_address
1      null
修改address.hbm.xml为:
<hibernate-mapping package="cn.com.lough.model">
   <class
       name="Address"
       table="address"
       lazy="false"
   >
       <meta attribute="sync-DAO">true</meta>
       <cache usage="read-write"/>
       <id
           name="IId"
           type="integer"
           column="i_id"
       >
           <generator class="native"/>
       </id>
       <property
           name="C_Address"
           column="c_address"
           type="string"
           not-null="false"
           length="128"
           insert="false"
       />
</hibernate-mapping>
再次运行程序,此时hibernate生成的sql语句为 insert into address() values();
的之哟0vba1
推荐于2017-12-16 · 超过67用户采纳过TA的回答
知道答主
回答量:122
采纳率:0%
帮助的人:130万
展开全部
在hibernate映射文件对数据库表的描述中,加入dynamic-insert="true"和 dynamic-update="true" 语句,这时hibernate在进行插入(更新)操作时,只会为那些值不为空的字段赋值,而值为空的字段就会使用数据库表中定义的默认值了。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式