的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/

10-10 02:43