【发布时间】:2015-02-22 08:40:37
【问题描述】:
在 java spring hibernate maven 项目中,我在一个字段上一起使用 (@Id 和 @GeneratedValue(strategy = GenerationType.AUTO)) 来使这个字段 P.K 和 mysql DB 上的自动增量。
我想要:
- 如果我没有手动设置其 id,则此字段为 auto_increment,如果我通过 setter 手动设置它,它工作正常(但目前如果我手动设置会出错)。
问题:
- 当我将 id 设为 null 时,auto_increment 有效,但当我手动设置时,我得到错误; 我如何注释和配置我可以通过 setter 和自动 pk Id 手动设置的模型类(我喜欢做的任何人)?
我的代码:
public class Company implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Basic(optional = false)
@Column(name = "id")
private Integer id;
基于java doc的注释细节:
@Id : 指定实体的主键
@GeneratedValue(策略 = ... ) : 提供主键值的生成策略规范
GenerationType.IDENTITY: 指示持久性提供程序必须使用数据库标识列为实体分配主键。
GenerationType.SEQUENCE: 指示持久性提供程序必须使用数据库序列为实体分配主键。
GenerationType.TABLE: 指示持久性提供程序必须使用底层数据库表为实体分配主键以确保唯一性。
GenerationType.AUTO: 如果你使用 AUTO,Hibernate 会选择其中一种策略来生成你的 id
【问题讨论】:
标签: java hibernate primary-key auto-increment setter