Hibernate的类型怎样映射数据库中字段的自定义类型

Hibernate的类型怎样映射数据库中字段的自定义类型,第1张

这个 按照我的理解

首先自定义注解要有自己的编译解释方法的

在这个便已解释方法中估计需要连接数据库(当然最基本的jdbc什么的)

当然连接数据库什么的涉及到配置文件

通过jdbc获取到数据库信息 把注解中的参数与数据库中的信息关联(简单的就可以存成List<Map等方式)由于注解的参数一般是类名。你可以 用反射的方式或其他方式(比如字节码什么的)来处理获取类的属性

然后 我感觉关联完了 就没啥然后了 感觉主要是在注解的编译解释方法中做写东西 当然 提高效率也可以用数据库连接池什么的

解决方法:

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


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存