Spring Data JPA(Hibernate)没有将列创建为自动增量

时间:2017-11-12 11:08:36

标签: mysql hibernate spring-boot spring-data spring-data-jpa

为什么此映射无法将列ID创建为自动增量?

@Entity(name = "user_role")
public class UserRole {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "id", nullable = false, unique = true)
    private Long id;

    @OneToOne(cascade = CascadeType.MERGE, targetEntity = Role.class)
    @JoinColumn(name = "role_id")
    private Role role;

    @OneToOne(cascade = CascadeType.MERGE, targetEntity = User.class)
    @JoinColumn(name = "user_id")
    private User user;
}

提前致谢!

2 个答案:

答案 0 :(得分:1)

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

@Id @GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name = "id", nullable = false, unique = true)
private Long id;
//Your code

要了解详情,请查看此Link 明确提到

  

IDENTITY策略还会在提交期间为每个新实体对象生成一个自动值。

答案 1 :(得分:0)

好吧,只是为了帮助别人。

问题是我的实体“user_role”的名称,我不知道为什么,但在将实体名称更改为“userrole”后,一切正常,id列被创建为AUTOINCREMENT。

希望这有帮助!