亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

請問hibernate中的<generater class="native">什么意思?

請問hibernate中的<generater class="native">什么意思?

江戶川亂折騰 2019-09-14 15:11:44
hibernate中的<generater class="native">什么意思
查看完整描述

5 回答

?
撒科打諢

TA貢獻1934條經驗 獲得超2個贊

hibernate 的配置文件中generator 表示id 的生成方式,常用的有native ,increment等方式

查看完整回答
反對 回復 2019-09-17
?
守著星空守著你

TA貢獻1799條經驗 獲得超8個贊

native有天生的,本土的,也就是說生來就有的,
那也就是說自動生成,不需要人工來幫忙或者管控的.

而assigned是指指定的,分配的,
如果你不賦予他甚麼東西,那麼他是不能實現的.
需要人工,自己把某個東西賦予給它
所以是assigned

在用Hibernate的時候,當有表中的主鍵是庫自動生成的時候將使用native。
<generator class="native"></generator>
而當是自己添加的時候則需要改為assigned。
<generator class="assigned"></generator>
否則將會出現異常!

如果建表時,該表主鍵類型是integer,并設置成auto-increment,用native;該表主鍵類型是string類型的,用uuid.hex


查看完整回答
反對 回復 2019-09-17
?
隔江千里

TA貢獻1906條經驗 獲得超10個贊

這是用來設置主鍵生成策略的。

 

具體策略:

 

Hibernate的Generator屬性有7種class,本文簡略描述了這7種class的意義和用法。

1、identity:用于MySql數據庫。特點:遞增 

< id name="id" column="id">       < generator class="identity"/>   < /id> 

注:對于MySql數據庫使用遞增序列時需要在建表時對主鍵指定為auto_increment屬性。

2、sequence:用于Oracle數據庫 

< id name="id" column="id">      < generator class="sequence">        < param name="sequence">序列名< /param>      < /generator>   < /id> 

3、native:跨數據庫時使用,由底層方言產生。 

Default.sequence為hibernate_sequence

< id name="id" column="id">      < generator class="native"/>   < /id>   

注:使用native時Hibernate默認會去查找Oracle中的hibernate_sequence序列。 

如果Oracle中沒有該序列,連Oracle數據庫時會報錯。

4、hilo:通過高低位合成id,先建表hi_value,再建列next_value。必須要有初始值。

< id name="id" column="id">       < generator class="hilo">         < param name="table">high_val< /param>          < param name="column">nextval< /param>         < param name="max_lo">5< /param>       < /generator>   < /id>  

5、sequencehilo:同過高低位合成id,建一個sequence序列,不用建表。 

< id name="id" column="id">   < generator class="hilo">   < param name="sequence">high_val_seq< /param>   < param name="max_lo">5< /param>   < /generator>   < /id> 

6、assigned:用戶自定義id; 

< id name="id" column="id">   < generator class="assigned"/>   < /id> 

7、foreign:用于一對一關系共享主健時,兩id值一樣。



查看完整回答
反對 回復 2019-09-17
?
jeck貓

TA貢獻1909條經驗 獲得超7個贊

一般id應該是唯一的,所以oracle 設計了序列,你可以在創建某個表時為其創建唯一的序列,此序列按照一定的規則產生唯一的id,在你添加記錄時自動生成一個唯一的id給那張表。所以hibernate才有這個<generator>來設置你的oracle數據庫表的對應的序列啊。
class為別的值時,有其他的屬性啊,表其實可以沒有序列的。

查看完整回答
反對 回復 2019-09-17
  • 5 回答
  • 0 關注
  • 609 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號