我在数据库中存储 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列,如数据库的这个屏幕截图
在此屏幕截图中,它创建随机值并将该值存储在id
列中,如129 141 161 162
但我不想要此值,我希望该值将以1, 2,3
开头,就像这样
请有人知道我必须使用哪个注释自动创建列并以1开始值?和怎么做?
给我一些想法。
答案 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的精彩教程。