Java 为存储实体生成Id(应用程序引擎)
如果我有一个这样定义的实体存储在App engine的大表中: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
@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的配置文件。