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

sql语句

中假如default设置的是

默认值

,当不显示插入

字段

时,可以默认插入设置的默认值

例如建立学生信息表Student,同时设置

学号

StudentNo为主键,如下:

create

table

Student(

StudentNo

int

not

null

primary

key,

StudentName

nvarchar(20)

not

null

也可以先建学生信息表Student,然后为学号StudentNo添加主键,如下:

1建学生信息表Student

create

table

Student(

StudentNo

int

not

null,

StudentName

nvarchar(20)

not

null

)

2为学号StudentNo添加主键

alter

table

Student

//注释:修改学生信息表Student

add

constraint

PK_StudentNo

primary

key

(StudentNo)

//注释:为StudentNo添加主键

DEFAULT约束在执行INSERT INTO语句时,如果某列没有提供具体的值,那么它提供了一个默认值。 例如: 例如,下面SQL语句创建一个新的表名为CUSTOMERS,并增加了5列。 SALARY列设置为500000默认情况下,这样的情况下,INSERT INTPO声明并没有提供SQL中的default怎么使用啊

MySQL不能在建表时用default curdate()指定字段默认值为当前日期,所以一定要在插入或更新的时候指定一个日期或者用curdate()函数,例如insert into 表 (字段) values (curdate()); 如果不指定一个时间,那就按照系统默认值也就是日期"0000-00-00"。

以上就是关于hibernate怎样处理数据库表中的有'default'属性的字段全部的内容,包括:hibernate怎样处理数据库表中的有'default'属性的字段、sql语句中default是什么意思、SQL中的default怎么使用啊等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存