![](/img/trans.png)
[英]Grails domain class query - how can I find by fields that link to another domain class?
[英]How can I effectively find a domain class instance based on ID if the domain class is unknown?
如果我有一個ID,但沒有指出它屬於哪個域類,我應該如何加載它?
我可以一次一個地測試我的應用程序中的每個域類的get(),但代碼將難以管理,而且效率很低。 有替代方法嗎?
是的,只有一種方法:嘗試獲取()每個域,直到找到一個域。
順便說一句,不同的域可以具有完全相同的ID(取決於配置)。
正如其他人所說,只用一個ID就很難做到。 您唯一真正的選擇是嘗試檢索具有該ID的每個域類,但正如其他人所提到的那樣,完全有可能存在多個具有該ID實例的域類。
值得慶幸的是,通過使用application.domainClasses
來獲取應用程序中的所有域類並使用它們進行循環是相當容易的。
如果不了解情況,就很難提出一些建議。 如果您有權訪問返回id的實例,那么也許您可以找到該類,然后使用該類來執行get()。
您可以為您的ID添加某種“元數據”。
例如,假設您有2個域類:Book和Author。 在數據庫中,您為該表創建兩個ID序列,一個在100000 - 199999范圍內,第二個在200000-299999范圍內。
現在,當您擁有ID時,您可以檢查范圍並找出它是哪個域對象。 它會比通過所有域類並在它們上調用get()更快,特別是如果你有一些渴望加載的集合。
但缺點是你必須以某種方式管理這個范圍,並始終記住它們,並確保涵蓋序列耗盡免費ID的情況。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.