簡體   English   中英

如果域類未知,我如何才能有效地找到基於ID的域類實例?

[英]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.

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