【发布时间】:2013-03-01 17:09:33
【问题描述】:
MySQL
CREATE TABLE `role` (
`id_role` INT(11) unsigned NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`id_role`)
) AUTO_INCREMENT=1;
休眠
@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,因为 Hibernate 永远无法知道是否从另一个客户端删除或重用了任何密钥。
-
如果表格显示
auto_increment,那么生成数字的是 MySQL。 ORM 无法计算真正唯一的整数主键。 -
这取决于你所说的真正独特的意思;)。 ORM 可以计算一个伪唯一整数主键。它只是效率低下。
标签: java mysql hibernate auto-increment