Postgresql:@GeneratedValue如何在postgresql中运行?

时间:2014-11-19 03:58:03

标签: postgresql playframework-2.0 ebean postgresql-9.3

我对postgresql很新。 在使用Ebean 的playframework中,我使用了mysql和自动生成的值,在这种情况下实际上是自动递增的。我得到的顺序是1,2,3,4 ......

但是在Postgresql中,生成的值似乎没有这样的属性。似乎对于每个会话,它开始时的数字大于前一个会话的数字,然后自动递增。在这种情况下的顺序,1,21,41,42,61,81,101,102,103 ......

我的代码段:

@Entity
public class Post extends Model{

    @Id
    @GeneratedValue
    @Required
    public int id;

我正在使用:

  1. Playframework 2.3.4
  2. Ebean
  3. Postgres 9.3
  4. 我真的不知道原因。这种价值观有什么特别的原因吗?关于这个有什么关注吗?我需要切换到自动增量吗?如果是这样,我该怎么做?

1 个答案:

答案 0 :(得分:0)

K,所以你使用的是AUTO策略,因为它是默认值。我对Ebean知之甚少,但是使用Hibernate,会创建一个名为hibernate_sequence的序列。

此序列将由其他实体共享,因此这可能是造成差距的部分原因。出于性能原因,您的ORM也可能是预先分配序列值。

无论哪种方式,我总是对Postgres使用IDENTITY策略,即使Postgres不使用IDENTITY。但它会为每个表创建一个序列,这通常是您想要的。