2014-01-24 35 views
1

如何自动在App引擎数据存储中生成Id? 我正在使用自动创建的后端函数insertEntity()。自动生成Id App引擎数据存储

我使用

@PrimaryKey 
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) 
private Long Id; 

当我打电话插入功能,我想的是,数据存储的自动分配ID作为主键...

感谢。

回答

1

从技术上讲,您所做的事情没有任何问题。该ID将自动生成。

我相信这个问题是为insertEntity()方法生成的自动生成的代码。该代码当前期望已提供ID值并基于该值,它首先尝试检索现有的实体。由于ID很可能是空的,即你没有通过它,它会导致代码中出现异常。

修改代码以检查getId() != null。如果不为空,则只允许它前进,否则就调用makePersistent()代码。

+0

哇。有时候我太生活太蠢了。 自动生成的代码检查实体是否已经在数据存储中,因为它假定您提供了Id。我只是删除了 if(contains Article(article)){ throw new EntityExistsException(“Object already exists”); } – Benedikt

+0

谢谢你的提示! – Benedikt

+0

不客气!我还建议您重新访问其他生成的代码。另外,我确实认为他们拥有的containsArticle(...)代码是有价值的,只是需要对它进行有条件的检查。理想情况下,您需要该检查,以便在记录已存在的情况下可以抛出异常。在确定是否存在类似记录的情况下,您可能还想在其他字段上进行额外的检查! – Romin

相关问题