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)

)

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

hibernate是一个ORM框架,就是实体类和数据库表的映射框架。

1. @table中的name对应数据库中的表名

2. 下面的类名就是和数据库表对应的实体类的名字

3. 实体类中的属性可以和数据库表中的列名对应(用@column标识)


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

原文地址:https://54852.com/sjk/6731189.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存