簡體   English   中英

Java,休眠瞬態字段

[英]Java, hibernate transient field

我有域對象Item,字段ID,名稱,parentItem和category(Boolean)。 所以我在數據庫中插入值,例如:

id名稱parentItem類別
1工具NULL 1
2電動工具1 1
3小型工具2 1
4實際工具結束子項3 0

因此實際項目在類別/路徑“工具/電動工具/小型工具”中

所以我需要通過categoryName / categoryPath實現惰性過濾器搜索。 例如:如果用戶在dataTable過濾器“ Electric”中輸入,則需要返回“ Electric tools”類別中的所有項目以及子類別中的所有項目(在此示例中為Small tools,如果存在則列出所有其他項目)。

所以目前我在java域對象@Transient字段中使用遞歸來獲取項目路徑。 但是我無法通過瞬態字​​段進行搜索。 我的意思是我無法在數據庫中實現搜索,因為此字段是:
1.瞬態
2.使用遞歸,如果我需要在其他數據庫版本上部署應用程序,我將不得不在數據庫或其他內容上重寫遞歸sql。 我不喜歡這樣

誰能指出我一些聰明的獨特解決方案? 任何想法,建議表示贊賞。 謝謝!

這個問題看起來非常相似: HQL遞歸,我該怎么做?

簡而言之:您不能在HQL中進行遞歸。 您最好的選擇是:

  • 編寫一個本機查詢來執行此操作(是的,由於遞歸查詢不是標准的SQL,因此您必須在每次數據庫移動時都將其重寫)
  • 使用聯接列在對象中具有父級/子級,並遍歷並過濾內存中的產品樹(由於預加載了所有內容,因此會占用更多的內存,但是只命中一次數據庫)
  • 如果您知道樹不太深,請進行多次查詢。 (節省內存,但是很多數據庫工作)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM