在App Engine的JDO实现中,对象类型保存为“Kind”,其中包含持久保存到数据存储区的Entity。当从数据存储区中取回这些实体时,它们将自动返回(在某些JDO层中)作为原始对象类型。令我困惑的是,只保存了班级的简单名称;不是完整的道路。那么JVM如何加载正确的类?
例如,如果我有com.project.domain.User并且我将此类的实例保存到数据存储区,则只为实体类型定义“用户”。当我使用JDO选择退出这个数据时,我得到了一个com.project.domain.User。 GAE / JDO如何知道加载com.project.domain.User而不是com.project.other.domain.User?
答案 0 :(得分:2)
您的JDO提供程序(GAE实际上不参与此等式)保持从实体到表的内部映射。有时它会从各种xml文件中形成它,有时它通过注释形成这个(取决于你的编码风格)。在此映射表中,名称实际上映射到完全限定的类。
如果您正在存储这两种User对象,那么JDO会给您一个例外,因为他们使用的是同一个表。您可以通过指定其他表(通过注释或xml配置)来解决此问题。该规范将进入JDO的内部映射。然后JDO将知道如何正确解析实体。