Java 为存储实体生成Id(应用程序引擎)

Java 为存储实体生成Id(应用程序引擎),java,google-app-engine,jdo,Java,Google App Engine,Jdo,如果我有一个这样定义的实体存储在App engine的大表中: @Entity @Table(name = "users") public class User implements Serializable{ @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id", nullable = false) private Long id; private St

如果我有一个这样定义的实体存储在App engine的大表中:

@Entity
@Table(name = "users")
public class User implements Serializable{

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id", nullable = false)
    private Long id; 
    private String username; 
    private String password;
    private String encryptedPassword;
    private String creationDate;
    private String modificationDate;
    private Boolean validated;

        // Code omitted
}
如果我有另一个具有另一个表注释的实体,比如说,
@table(name=“profile”)
将使每个实体Id彼此独立。例如,存在id为0的用户实体和id为0的概要文件实体

我的意思是,由于实体存储在一个“大表”中,因此将为存储的所有实体分配顺序Id。添加这样的注释是否解决了实体具有独立id序列的问题


我试图实现的是,每个实体都有自己的Id,从0开始到n,每个实体类型都有自己的序列,例如,用户实体将从0开始按顺序处于长类型中,配置文件实体也是如此,从0开始

是,无论您拥有多少实体,自动生成的id或序列始终是独立的。对于PostgreSQL,如果您将数据类型设置为bigint,则必须在数据库中手动创建序列,但如果您将其设置为bigserial,则无需在数据库服务器中为该表显式创建序列。享受………

不,所有种类都有自己的ID序列,可能会重叠。您可以使用allocate_ids API分配唯一的ID,但请注意,这仍然不允许您在不知道实体种类的情况下查询实体(我想这就是为什么您要这样做),因为您必须查询每种实体才能找到包含您ID的实体。

我忘了定义我正在使用app engine存储数据,在它的大表上,您的答案是否仍然适用于app engine?抱歉,不知道appengine,但这是确认序列将是独立的。我刚刚通过代码单元测试确认,每种类型的实体都有其自己的自动生成id序列,从1开始,“可能重叠”是什么意思,您是说每个实体类型的ID可能重叠,还是每个实体都有独立于其他实体类型的ID序列?@xybrek我的意思是您可以拥有ID为1的用户和ID为1的配置文件。