我的GWT + GAE应用程序使用Requestfactroy实体定位器,并且在服务器端我使用Objectify,当我的实体ID类型是String时,它运行良好,现在我想要更改为Long id,并且卡住:通过使用定位器签名我找不到实体:
@Override
public T find( Class<? extends T> clazz, Long id )
{
}
因为Objectify需要包含@Parent键来获取子实体(HRD),并且从上面的方法我们无法得到父实体。 我从GWT论坛找到了这个帖子: here
然而,这个线程似乎没有给出任何建设性的建议(它最终落回到String ID Entity for the solution)。
非常感谢。
答案 0 :(得分:1)
问题是长ID不足以识别您的对象。正如您所说,您还需要其父级,因此ID实际上是一个复合ID:父对象和子级ID。
顺便说一句,在这里使用keyToString
或类似问题有什么问题? (如您链接的主题所示)Locator
的ID仅用于服务器端,而仅用于定位器(并且序列化 as-is 来回传递给/来自客户端;但它们在客户端是不透明的东西,你甚至没有获得访问权限。)