我目前正在使用 GWT、GAE 并使用 JPA 作为我的 ORM。我有一个问题,GAE 生成的密钥太大而无法在带有 RequestFactory 的移动设备上使用。由于转换为 String 时 ID/KEY 的大小,小列表中的数据量非常大。
我使用字符串作为我的密钥,以便我可以处理继承。
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Extension(vendorName = "datanucleus", key = "gae.encoded-pk", value = "true")
protected String key;
这会创建一个非常长的键,例如“agxzbWFydGJhcnNpdGVyFAsSDUVzdGFibGlzaG1lbnQYuAIM”,并且由于在键中存储对象类型和父级而变得更大。
我需要一种方法来创建一个较小的唯一 ID,但仍然能够在 GAE 中处理继承。我尝试将 Long 作为 @Id/key,但由于 String/Key 键中内置的关系,我无法在我的对象上使用 @OneToMany 关系。
另一种选择是为每个类创建一个序列并为该 id 使用 Long 属性。下面有一个示例,但我不确定如何在应用引擎中处理生成的长序列。
@GeneratedValue private Long friendlyClassSpecificKey;
任何意见,将不胜感激。如果除了对我感兴趣的每个类类型使用序列之外还有其他选择,但如果没有,是否有为特定类创建序列(不是@ID)的示例?