1

如果给了我一个 ID,但没有指明它属于哪个域类,我应该如何加载它?

我可以一次针对我的应用程序中的每个域类测试 get(),但是代码将难以管理并且效率相当低。有替代方法吗?

4

4 回答 4

2

正如其他人所说,仅使用 ID 很难做很多事情。您唯一真正的选择是尝试检索具有该 ID 的每个域类,但正如其他人所提到的,完全有可能存在多个具有该 ID 的实例的域类。

值得庆幸的是,获取应用程序中的所有域类并使用application.domainClasses.

于 2012-06-19T17:16:49.257 回答
2

是的,只有一种方法:尝试 get() 每个域,直到找到一个。

顺便说一句,不同的域可以具有完全相同的 id(取决于配置)。

于 2012-06-19T16:51:11.770 回答
0

您可以将某种“元数据”添加到您的 id。

例如,假设您有 2 个域类:Book 和 Author。在数据库中,您为该表创建两个 id 序列,一个在 100000 - 199999 范围内,第二个在 200000-299999 范围内。

现在,当您有一个 Id 时,您可以检查它的范围并找出它是哪个域对象。它会比遍历所有域类并在它们上调用 get() 更快,特别是如果你有一些急切加载的集合。

但缺点是您必须以某种方式管理此范围,并始终记住它们,并确保涵盖序列用完免费 ID 的情况。

于 2012-06-20T09:29:06.533 回答
0

在不了解上下文的情况下,提出一些建议会更加困难。如果您有权访问返回 id 的实例,那么也许您可以找出该类,然后使用该类执行 get()。

于 2012-06-19T16:53:15.837 回答