【问题标题】:GWT Requestfactory entity locator does not work with Objectify when the Entity has Long id当实体具有长 ID 时,GWT Requestfactory 实体定位器不适用于 Objectify
【发布时间】:2012-03-17 14:15:07
【问题描述】:

我的 GWT+GAE 应用程序使用 Requestfactroy 实体定位器,在服务器端我使用 Objectify,当我的实体 ID 类型为字符串时它运行良好,现在我想更改为长 ID,并卡住:通过使用定位器签名我找不到实体:

 @Override
    public T find( Class<? extends T> clazz, Long id )
    {
    }

因为 Objectify 需要包含 @Parent 键来获取子实体(HRD),而从上面的方法中我们无法获取父实体。 我从 GWT 论坛找到了这个帖子: here

然而这个帖子似乎没有给出任何建设性的建议(它最终回落到字符串ID实体的解决方案)。

非常感谢。

【问题讨论】:

    标签: java gwt requestfactory objectify


    【解决方案1】:

    问题在于长 ID 不足以识别您的对象。正如你所说,你还需要它的父对象,所以 ID 实际上是一个复合 ID:父对象和子对象的 ID。

    顺便说一句,在这里使用keyToString 或类似名称有什么问题? (如您链接到的线程中所建议的那样)
    Locator 的 ID 仅在服务器端使用,并且仅 定位器(并且序列化 as-is 来回传递给/来自客户端;但它们在客户端是不透明的东西,你甚至没有被授予访问权限)。

    【讨论】:

    • 感谢您的快速回复,当我使用 String ID 实体时,我使用 KeyFactory 的 keyToString 和 StringToKey 并且它工作正常,所以您的意思是我可以继续在服务器端使用带有长 id 实体的字符串类型定位器?我会试试的。
    • 如你所说,实体中的id与定位器中的id没有关系,后者只是一个复合的东西,我的测试通过了,非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-18
    • 2011-06-24
    • 1970-01-01
    相关资源
    最近更新 更多