日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Hibernate中使用未映射为主键的“id”字段进行查询的场景分析

發布時間:2024/2/28 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Hibernate中使用未映射为主键的“id”字段进行查询的场景分析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

今天遇到一個hibernate的問題,有一個實體的主鍵字段叫userId,數據庫里的字段名稱是user_id。
然后在某個查詢語句里有這樣一段代碼:

Criterion criterion = Restrictions.eq("id",userId); User user=userDao.findUnique(criterion);

當時看到這段代碼的感覺是應該會報錯吧,因為這個實體并沒有id這個字段,然而事實是不僅可以運行,結果還是正確的。
搜索了下網絡,發現有網友遇到類似的問題,但是沒有找到問題的原因。原帖如下:

跟蹤了一下hibernate的源代碼,發現在hibernate啟動生成映射關系的時候,會先初始化普通字段的映射關系,再初始化主鍵字段的映射關系,如下圖所示:

而這種主鍵字段的初始化,也就是initIdentifierPropertyPaths(mapping)這個方法,不僅會生成userId->user_id的映射關系,還會生成一條id->user_id到映射關系。

至此,問題的原因已經明朗了,我遇到的問題是因為hibernate自動生成了id的映射,所以可以訪問到id屬性。而網友的問題則是,hibernate第二步自動生成的id映射關系覆蓋了第一步普通屬性里id的映射關系。

總結

以上是生活随笔為你收集整理的Hibernate中使用未映射为主键的“id”字段进行查询的场景分析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。