Hibernate在为我的SQL生成ddl时添加了唯一的约束

时间:2019-07-12 20:15:23

标签: mysql hibernate spring-boot

Am将休眠和春季启动与mySql数据库一起使用。 启用DDL模式以生成sql。 但是不知道为什么要在每个alter table中添加 unique 约束。 我不希望自己成为唯一的,但仍处于休眠状态,正在添加它。

@Entity
public class Users extends BaseEntity {

private static final long serialVersionUID = 1L;

@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name = "id", updatable = false, nullable = false)
private Long id;

@Size(max = 100)
@NotNull
private String username;

@Size(max = 150)
@NotNull
private String password;

@Size(max = 100)
@NotNull
@Column(unique = true)
private String email;

@JoinColumn(name = "role_id",**unique=false**)
@OneToOne(fetch = FetchType.EAGER ,optional = false)
private Role role;

}



@Entity
public class Role implements Serializable{

private static final long serialVersionUID = 1L;

@Id
@Column(name = "role_id",nullable = false)
private Integer roleId;

@Enumerated(EnumType.STRING)
@Size(max = 10)
@Column(name = "role_type",nullable = false,length = 10)
private RoleType roleType;

@Size(max = 50)
@Column(name = "description",length = 50)
private String description;

}


DDL by Hibernate -

alter table users 
   add constraint UK_pkddbcvou26qe5hsawu1mbnlb **unique** (role_id)

但是我不希望用户表中的唯一(role_id),因为可以将多个用户分配给一个角色。 是否由于一对一映射。是否有办法说不要在用户表中创建唯一的(role_id)。 即使我尝试使用@JoinColumn(name =“ role_id”,unique = false)但也没有运气。任何机构都可以在这里提供帮助。

1 个答案:

答案 0 :(得分:0)

我在下面的用户表中使用@ManyToOne(optional = false)解决了这个问题,但不确定这是否正确,但这解决了我的问题。

@JoinColumn(name="role_id")
@ManyToOne(optional=false)
private Role role;