could not insert into NHibernate数据库问题解决
生活随笔
收集整理的這篇文章主要介紹了
could not insert into NHibernate数据库问题解决
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
今天在做NHibernate時老出現一個could not insert into 數據庫的異常,在網上查閱資料后發現是在<generator class="native" />配錯了,這個配置默認的是數據庫表中主鍵字段自增,而我的表在設計時不是自增的,在添加數據的時候還給主鍵Id賦了值,所以導致這種錯誤。現將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值一樣。
?<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值一樣。
轉載于:https://www.cnblogs.com/quandeboke/archive/2013/04/15/3022554.html
總結
以上是生活随笔為你收集整理的could not insert into NHibernate数据库问题解决的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Simics系统模拟器
- 下一篇: java集合类详细概述