欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
Hibernate中常見(jiàn)問(wèn)題 No row with the given ident...
 Hibernate中No row with the given identifier exists問(wèn)題的原因及解決

            產(chǎn)生此問(wèn)題的原因:

             有兩張表,table1table2.產(chǎn)生此問(wèn)題的原因就是table1里做了關(guān)聯(lián)<one-to-one>或者<many-to-one unique="true">(特殊的多對一映射,實(shí)際就是一對一)來(lái)關(guān)聯(lián)table2.當hibernate查找的時(shí)候,table2里的數據沒(méi)有與table1相匹配的,這樣就會(huì )報No row with the given identifier exists這個(gè)錯.(一句話(huà),就是數據的問(wèn)題!)

           假如說(shuō),table1里有自身的主鍵id1,還有table2的主鍵id2,這兩個(gè)字段.

          如果hibenrate設置的單項關(guān)聯(lián),即使table1中的id2為null值,table2中id2中有值,查詢(xún)都不會(huì )出錯.但是如果table1中的id2字段有值,但是這個(gè)值在table2中主鍵值里并沒(méi)有,就會(huì )報上面的錯!

         如果hibernate是雙向關(guān)聯(lián),那么table1中的id2為null值,但是table2中如果有值,就會(huì )報這個(gè)錯.這種情況目前的解決辦法就是改成單項關(guān)聯(lián),或者把不對應的數據改對!

           這就是報這個(gè)錯的原因了,知道原因了就相應的改就行了.或許還有些人迷惑hibernate關(guān)聯(lián)都配好了,怎么會(huì )出現這樣的錯?其實(shí)這是編程的時(shí)候出現的問(wèn)題,假如說(shuō)我在添加信息的時(shí)候,頁(yè)面傳過(guò)來(lái)的struts的formbean到dao方法中需要封裝成hibernate的po(就是hibenrate的bean),要是一個(gè)個(gè)po.get(form.set())實(shí)在太麻煩了,這樣一般都會(huì )寫(xiě)個(gè)專(zhuān)門(mén)的方法來(lái)封裝,遇到po.get(form.set())這種情況直接把struts的formbean對象傳到此方法中封裝就行了,假如我有個(gè)字段是創(chuàng )建人id,那么這個(gè)字段是永遠不會(huì )改的,我在添加的時(shí)候還調用這個(gè)方法,這個(gè)專(zhuān)門(mén)封裝的方法是有一些判斷的,假如說(shuō)我判斷一下,如果遇到創(chuàng )建人id傳過(guò)來(lái)為空值,我判斷如果是空值,我把創(chuàng )建人id設為0,但是用戶(hù)表中userid是主鍵從1開(kāi)始自增的,那么這樣數據就對應不上了,一查就會(huì )出這個(gè)錯了.這個(gè)錯在開(kāi)發(fā)剛開(kāi)始的時(shí)候經(jīng)常發(fā)生,因為每個(gè)人的模塊都是由相應的人獨立開(kāi)發(fā)完成以后再整合在一起的,每個(gè)人寫(xiě)單獨那一塊的時(shí)候往往會(huì )忽略這些,所以整合的時(shí)候這些問(wèn)題往往就都一下子全冒出來(lái)了....整合很辛苦,tnnd!

 

 

hibernate的查詢(xún)的比較
hibernate的查詢(xún)有很多,Query,find,Criteria,get,load

query使用hsql語(yǔ)句,可以設置參數是常用的一種方式

criteria的方式,盡量避免了寫(xiě)hql語(yǔ)句,看起來(lái)更面向對象了。

find方式,這種方式已經(jīng)被新的hibernate丟棄

get和load方式是根據id取得一個(gè)記錄
下邊詳細說(shuō)一下get和load的不同,因為有些時(shí)候為了對比也會(huì )把find加進(jìn)來(lái)。

1,從返回結果上對比:
load方式檢索不到的話(huà)會(huì )拋出org.hibernate.ObjectNotFoundException異常
get方法檢索不到的話(huà)會(huì )返回null

2,從檢索執行機制上對比:
get方法和find方法都是直接從數據庫中檢索
load方法的執行則比較復雜
1,首先查找session的persistent Context中是否有緩存,如果有則直接返回
2,如果沒(méi)有則判斷是否是lazy,如果不是直接訪(fǎng)問(wèn)數據庫檢索,查到記錄返回,查不到拋出異常
3,如果是lazy則需要建立代理對象,對象的initialized屬性為false,target屬性為null
4, 在訪(fǎng)問(wèn)獲得的代理對象的屬性時(shí),檢索數據庫,如果找到記錄則把該記錄的對象復制到代理對象的target
上,并將initialized=true,如果找不到就拋出異常 。



本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
Hibernate3.2 .1參考文檔
轉:ORACLE NULL詳解
jpa下hibernate的ddl-auto的各種屬性
mysql命令
Object-relation mapping without the container
Mysql數據庫操作常用命令
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久