如何在数据库中存储值,该值自动以1开头并在java中使用注释递增?

时间:2013-08-13 11:19:08

标签: java hibernate jpa playframework annotations

我在数据库中存储 names,password,username,email 等值,我希望自动 id 主列已创建且值以1开头并自动递增。我正在创建一个类user,它有像我写的数据成员

    @Entity
     public class User extends Model {

    @Id(start)
    @GeneratedValue(strategy=GenerationType.AUTO)
    private int id;

    @Required
    @MinLength(value=4)
    public String username;
    @Required
    public String name;



    @Required
    @MinLength(value=6)
    public String password;

    @Required
    @Email
    public String email;

    public User(String name,String username,String password,String email)
    {
        this.name=name;
        this.username=username;
        this.password=password;
        this.email=email;
    }


}

我在数据库中存储值,它正在数据库中存储值和创建id列,如数据库的这个屏幕截图

database image

在此屏幕截图中,它创建随机值并将该值存储在id列中,如129 141 161 162但我不想要此值,我希望该值将以1, 2,3开头,就像这样

请有人知道我必须使用哪个注释自动创建列并以1开始值?和怎么做?

给我一​​些想法。

2 个答案:

答案 0 :(得分:1)

不知道自动创建列,但以下是自动填充的方法:

首先在数据库SEQUENCE中创建序列而不是在实体类中创建序列:

@Id
@Column(name = "id", unique = true, nullable = false)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "id_increment")
@SequenceGenerator(name = "id_increment", sequenceName = "seq_name", allocationSize = 1)    
public int getId() {
    return id;
}
public void setId(int id) {
    this.id = id;
}

比你添加记录到数据库列时将填充序列+1中的数字

和ofc你不需要先设置id字段,它将自动设置

答案 1 :(得分:1)

关于GenerationType.AUTO的事情是它生成的ID在数据库级别是唯一的,永远不会被回收。这意味着在table1中,如果其他表中存在id的3,4和5,则您的id字段可以从2增加到6。

尝试使用生成策略GenerationType.IDENTITY(或GenerationType.SEQUENCE,已在另一个答案中解释)。身份生成策略管理每种类型hirarchy的唯一id,因此id'基本上是每个表顺序,即1,2,3,4等....

有关更多信息,请参阅The ObjectDB Website的精彩教程。