的MySQL
CREATE TABLE `role` (
`id_role` INT(11) unsigned NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`id_role`)
) AUTO_INCREMENT=1;
hibernate
@Entity
public class Role {
private Integer idRole;
@Column(name = "id_role", precision = 10)
@GeneratedValue
@Id
public Integer getIdRole() {
return idRole;
}
public void setIdRole(Integer idRole) {
this.idRole = idRole;
}
}
基于上述背景,在创建新的
id_role
时,谁负责role
列的自动递增?换句话说,Hibernate是在运行create
SQL语句之前设置主键值,还是将其设置为null
并让MySQL在取回所选主键的同时自动递增字段? 最佳答案
要使用MySQL的AUTO_INCREMENT
列,您应该使用IDENTITY
策略:
@Id @GeneratedValue(strategy=GenerationType.IDENTITY)
private Long id;
将
AUTO
与MySQL结合使用时,您将获得以下内容:@Id @GeneratedValue(strategy=GenerationType.AUTO)
private Long id;
实际上等于
@Id @GeneratedValue
private Long id;
关于java - 谁负责在MySQL和Hibernate之间自动增加主键?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15390856/