gpt4 book ai didi

java - 谁负责 MySQL 和 Hibernate 之间主键的自增?

转载 作者:可可西里 更新时间:2023-11-01 07:02:10 24 4
gpt4 key购买 nike

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;
}

}

鉴于上述背景,在创建新的role时,谁负责id_role列的自增?换句话说,Hibernate 是在运行 create SQL 语句之前设置主键值,还是将其设置为 null 并让 MySQL 在返回时自动递增该字段选择的主键?

最佳答案

要使用 MySQL AUTO_INCREMENT 列,您应该使用 IDENTITY 策略:

@Id @GeneratedValue(strategy=GenerationType.IDENTITY)
private Long id;

当对 MySQL 使用 AUTO 时你会得到什么:

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

实际上相当于

@Id @GeneratedValue
private Long id;

关于java - 谁负责 MySQL 和 Hibernate 之间主键的自增?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15390856/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com