2011-05-01 48 views
2

我有一个RESTful系统中的服务器(GAE)和客户端(Android)都使用了很多自定义对象类。为了便于维护,这些对象的代码在服务器和客户端之间是通用的。Objectify - 将@Id添加到任何类

为了使这些对象可以在服务器端使用Objectify存储,一个字段必须注解@Id。但是,如果不在客户端导入javax.persistence(或者创建单独的客户端/服务器代码副本)(或者对于每个对象,通过克隆创建“StorableX extends X”),我无法在每个对象类中执行此操作。

是否可以使用适配器或包装模式通过Objectify动态地使任何对象可存储?最佳做法是什么?

谢谢, --John

回答

0

有通常使用一个带注释类没有注释界面在类路径存在,即使该注释是一个运行时一个没有问题。当然,如果类的字节代码被检测到,或者某些类在运行时尝试使用注释,那是另一回事。

+0

“Id无法解析为类型”阻止构建和运行客户端。 – 2011-05-01 21:47:30

+0

添加javax.persistence jar以构建带注释的类,但不要在运行时将其包含在客户端的类路径中。如果这些类对于服务器和客户端是通用的,那么它们应该为这两个层次编译一次,而不是两次。 – 2011-05-01 21:52:24

+0

如果将javax.persistence.Id导入到常用注释类X中,则可以成功构建它并将其添加到服务器和客户端的类路径中。但是,当客户端尝试实例化X类型的对象时,它无法处理“import javax.persistence.Id;” – 2011-05-01 22:26:45