我正在使用 Appengine 云端点和对象化。我以前部署过这些端点,现在我正在更新它们,但它不能与 Objectify 一起使用。我已经转移到一台新机器并运行最新的 appengine 1.8.6。尝试将 objectify 放入类路径中,但没有用。我知道这可行,我还缺少什么??
运行 endpoints.sh 时:
Error: Parameterized type
com.googlecode.objectify.Key<MyClass> not supported.
更新: 我回到我的旧计算机并在同一个端点上运行 endpoints.sh,它工作正常。旧机器有 1.8.3。我正在使用 objectify 3.1。
更新 2: 将我的旧机器更新到 1.8.6 并得到与其他机器相同的错误。留下 2 种可能性: 1) 端点不再支持 objectify 3.1 或 2) Endpoints 在最新版本中存在错误
很可能#1...无论如何我一直想更新到 4.0...
最佳答案
由于 Objectify 的流行,在以前的版本中添加了一个解决方法来支持 Key
类型,直到有更通用的解决方案可用。因为新的解决方案可用,解决方法已被删除。现在,您可以通过两种方式处理属性(property)问题。
- 添加
@ApiResourceProperty
导致在序列化过程中从对象中省略键的注释。如果您想要一个简单的解决方案并且不需要访问客户端中的 key ,请使用此方法。 - 添加
@ApiTransformer
注释提供了一个兼容的机制来序列化/反序列化字段。如果需要访问客户端中的 key (或其表示形式),请使用此方法。由于这需要编写一个转换器类,因此它比第一个选项工作量更大。
关于google-app-engine - 使用 Cloud Endpoints 对象化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19707359/