當前位置:首頁 » 操作系統 » hibernate資料庫映射

hibernate資料庫映射

發布時間: 2023-04-29 15:29:29

1. hibernate映射資料庫表如何使表中欄位默認值生效

解決方法:
在hibernate映射文件對資料庫表的描述中,在當前欄位處加入insert="false"語句,這時hibernate在進行插入操作時,只會為那些有實值的欄位賦值,而值為空白的欄位就會使用資料庫表中定義的默認值了。

舉例說明,表person:

sql">CREATETABLEaddress(
i_idint(11)NOTNULLauto_increment,
c_addressvarchar(100)NOTNULLdefault'中國',
PRIMARYKEY(id)
)
address.hbm.xml:
<hibernate-mappingpackage="cn.com.lough.model">
<class
name="address"
table="address"
lazy="false"
>
<metaattribute="sync-DAO">true</meta>
<cacheusage="read-write"/>
<id
name="IId"
type="integer"
column="i_id"
>
<generatorclass="native"/>
</id>
<property
name="C_Address"
column="c_address"
type="string"
not-null="false"
length="128"
/>
</hibernate-mapping>
運行程序
publicregAddress(Stringa){//傳入的值a未在網頁文本框里獲得任何值(家庭地址)
Addressp=newAddress();
p.setAddress(a);
HiFactory.save(p);
}
此時hibernate生成的sql語句為insertintoperson(c_address)values('');
資料庫表結果為
i_idc_address
1null
修改address.hbm.xml為:
<hibernate-mappingpackage="cn.com.lough.model">
<class
name="Address"
table="address"
lazy="false"
>
<metaattribute="sync-DAO">true</meta>
<cacheusage="read-write"/>
<id
name="IId"
type="integer"
column="i_id"
>
<generatorclass="native"/>
</id>
<property
name="C_Address"
column="c_address"
type="string"
not-null="false"
length="128"
insert="false"
/>
</hibernate-mapping>
再次運行程序,此時hibernate生成的sql語句為insertintoaddress()values();

2. 資料庫表在兩個資料庫中,怎麼進行hibernate映射呢

前提是你數據源配置正確.
映射文件中:
注意看class屬性:
name是你的model類(包名+類名)
table是你資料庫里的表名
catalog是你的資料庫名
<hibernate-mapping>
<class name="com.cwx.model.Xsb" table="XSB" schema="dbo" catalog="XSCJ">
......
</class>
</hibernate-mapping>

3. Hibernate的類型怎樣映射資料庫中欄位的自定義類型

在hibernate的xml映射文件中可以配置實體屬性與資料庫欄位間的對應關系。如下:
<property name="salary" precision="2" scale="10" length="255"
column="salary" type="string" update="true" insert="true"
lazy="false" unique="false" not-null="false">
</property>

4. 在HIbernate中,實體類如何映射到資料庫

是通過映射文件來映射的。舉個簡單的例子,例如我有個Teacher實體類(某教學管理系統老師用戶):
private Integer id; //編號
private String name; //姓名
private String password; //密碼
private Date createDate; //創建日期
同時,我創建了數據表TEACHER:
create table teacher( id number(9) primary key, --編號 name varchar2(20), --姓名 password varchar2(20), --密碼 create_date date --創建日期 );
這時,怎麼關聯它們呢?通過載入hibernate框架,我們就可以使用映射文件來關聯實體類和資料庫了
文件名:Teacher.hbm.xml(必須與實體類名字一致)
內容:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" " http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Mapping file autogenerated by MyEclipse Persistence Tools-->
<hibernate-mapping>
<class name="com.yss.Teacher" table="TEACHER" schema="WZM">
<id name="id" type="java.lang.Integer">
<column name="ID" precision="9" />
</id>
<property name="name" type="java.lang.String">
<column name="NAME" length="20" />
</property>
<property name="password" type="java.lang.String">
<column name="PASSWORD" length="20" />
</property>
<property name="createDate" type="java.util.Date">
<column name="CREATE_DATE" length="7" />
</property>
</class>
</hibernate-mapping>
當然,這只是比較簡單的映射,還有什麼多對多,一對多等映射,並且映射時如何設置以達到需要的效果,這些你可以在網上搜索相關資料自行查看。

熱點內容
中國移動用什麼服務密碼 發布:2024-05-20 00:52:10 瀏覽:695
make編譯輸出 發布:2024-05-20 00:37:01 瀏覽:67
4200存儲伺服器 發布:2024-05-20 00:20:35 瀏覽:160
解壓小生活 發布:2024-05-20 00:15:03 瀏覽:143
粘土小游戲伺服器ip 發布:2024-05-20 00:14:00 瀏覽:196
魔獸世界如何快速增加伺服器 發布:2024-05-19 23:53:37 瀏覽:694
安卓手機如何轉入蘋果手機內 發布:2024-05-19 23:50:35 瀏覽:405
安卓哪個能安裝血染小鎮 發布:2024-05-19 23:45:57 瀏覽:901
tensorflowmac編譯 發布:2024-05-19 23:28:59 瀏覽:702
sqlmaxvarchar 發布:2024-05-19 23:24:02 瀏覽:703