繁体   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