0

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

@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 的 User 实体和一个 ID 为 0 的 Profile 实体。

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

我想要完成的是每个实体都有自己的 ID,从 0 到 n,每个实体类型都有自己的序列,例如,用户实体将从零开始依次处于 Long 类型,并且与Profile 实体也以 0 开头。

4

2 回答 2

0

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

于 2012-04-18T07:03:19.973 回答
0

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

于 2012-04-19T04:25:45.807 回答