2012-06-21 47 views
0

我有一个实体类型say URLInfo,它保存有关URL的信息。该实体的主键是URL本身(这确保了我在数据存储中始终具有唯一的URL)。我也想为每个网址使用唯一的整数ID,以便共享ID变得更容易。虽然,我可以使用GUID,但这对我来说不是首选。我怎样才能达到这个要求?整数Ids不需要是顺序的(首选,如果是的话)。实体可以以更快的速度生成(这意味着我无法在每次生成新的URL记录时更新公用计数器)。这是我迄今为止所尝试的 - 在URLInfo类中,我定义了一个字段 - Long Id,并使用@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)对其进行了注释,希望能够自动生成唯一值。但是,当我保存新实体(id设置为空)时,它将实体保存在数据存储中,但不会为此字段分配任何值。Google App Engine中实体的非主键字段的唯一整数ID

我正在尝试所有这些在本地机器上。

感谢

回答

0

试试这个

@GeneratedValue(strategy=GenerationType.IDENTITY) 
+0

也许我忘了提,我使用JDO。您建议的注释不可用(GeneratedValue无法解析为某种类型)。 –

+0

好的。我假设你使用JPA。 只有你提到使用注释'@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)'时,一定要同时使用'@ PrimaryKey'注释。 你还必须小心键的类型。查看链接: https://developers.google.com/appengine/docs/java/datastore/jdo/creatinggettinganddeletingdata#Keys – Angel

+0

嗨天使。我希望它没有@PrimaryKey注释。我的主键是URL。如果我将整数ID作为主键,我会冒着在数据存储中重复我的URL的风险(如果您知道使用哪种策略可以避免此风险,那么我将非常高兴并采用该策略)。简而言之,我需要存储唯一的URL以及其唯一的整数ID。 –

相关问题