hibernate怎样处理数据库表中的有'default'属性的字段

hibernate怎样处理数据库表中的有'default'属性的字段,第1张

解决方法:

在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)

)

addresshbmxml:

<hibernate-mapping package="cncomloughmodel">

<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 ();

psetAddress(a);

HiFactorysave(p);

}

此时hibernate生成的sql语句为insert into person(c_address) values('');

数据库表结果为

i_id c_address

1 null

修改addresshbmxml为:

<hibernate-mapping package="cncomloughmodel">

<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();

用户自定义数据类型是个确保数据库中域和数据紧密结合的好办法。数据的类型可能在整个数据库中都是一致的,每个数据的适用范围和他的数据类型是相关联的。sp_bindrule过程是个向后兼容过程,该过程为数据类型确定了一个适用范围。CREATE RULE命令也是个向后兼容命令,为域值的遵守产生了一个规则。该规则能被限制为用户自定义的数据类型。CREATE DEFAULT也是个向后兼容命令,而且也能被限制为用户自定义的数据类型。

这些向后兼容命令都是由Sybase演化而来的。SQL Server的未来版本是否支持他们目前还不能确定。微软推荐用户使用CHECK CONSTRAINT命令。然而,CHECK CONSTRAINTS不支持模块化编码。你必须为所有需要CHECK CONSTRAINT的表格的每一列都创建一个CHECK CONSTRAINT。另一方面,创建规则和缺省值,并把他们限制在一个用户自定义数据类型这个过程只需进行一次。用户自定义数据类型有非常多种,比如性别和标签的布尔值。性别的域值能是雄性,雌性,及未知。布尔值的域值能是数值,也能是真假值。

以上就是关于hibernate怎样处理数据库表中的有'default'属性的字段全部的内容,包括:hibernate怎样处理数据库表中的有'default'属性的字段、数据库怎么定义自己的数据类型、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9338157.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存