【发布时间】:2018-04-29 12:01:18
【问题描述】:
我有一个应用程序使用 JDBC 访问现有的 MySQL DB,并且正在转换为 JPA。我的数据库已经设置了自动生成的主键。当数据库中已经定义了我的实体类时,我是否需要用@Id、@GeneratedValue...注释?注释是否会覆盖/与已定义的数据库主键/索引发生冲突?
【问题讨论】:
标签: jpa annotations
我有一个应用程序使用 JDBC 访问现有的 MySQL DB,并且正在转换为 JPA。我的数据库已经设置了自动生成的主键。当数据库中已经定义了我的实体类时,我是否需要用@Id、@GeneratedValue...注释?注释是否会覆盖/与已定义的数据库主键/索引发生冲突?
【问题讨论】:
标签: jpa annotations
我假设您在 MySQL 中使用自动编号,这些是自动生成的。
以下代码将满足您的要求:
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "table_id")
注意到GenerationType.IDENTITY 策略了吗?这告诉 JPA 使用自动生成的数据库值。
【讨论】:
不会与数据库主键和JPA注解冲突。由于主键已经被索引,所以完全没有问题。
你应该在实体类中添加注解,它不会与已经定义的数据库冲突。如果你在新的数据库环境中部署系统,那么必须需要注解。
【讨论】: