我是靠谱客的博主 英勇黄蜂,这篇文章主要介绍mysql 如何去掉字段唯一约束_Jhipster - JPA 如何设置字段的唯一性(Unique),现在分享给大家,希望可以做个参考。

a561d0ff331394d734339dd343d254a5.png

问题提出

如果有一个domain(Java bean)。现在,我要确保字段是唯一的。需要如何设置呢? 比如如下代码, 我们要保证 openid是唯一的, 保存到数据库里的数据不会有重复.

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
​ /** * A WxUser. */ @Entity @Table(name = "wx_user") @Cache(usage = CacheConcurrencyStrategy.READ_WRITE) @org.springframework.data.elasticsearch.annotations.Document(indexName = "wxuser") public class WxUser implements Serializable { ​ private static final long serialVersionUID = 1L; ​ @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; ​ @Column(name = "openid") private String openid; ​ @Column(name = "nickname") private String nickname; ​ @Column(name = "sex") private Long sex; }

解决方法

  1. 如果只要保证一个字段, 比如这里就是 列 openid唯一, 只需要 添加 " unique=true " 到@Column注解就可以.
    @Column(name = "openid", , unique=true) private String openid;
  2. 如果需要多个字段组合唯一性, 比如 组合 nickname 和 openid 为唯一性, 这个时候就要用到 @UniqueConstraint 注解. 添加到@Table注解里面, 如下:
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
@Entity @Table(name = "wx_user", uniqueConstraints={@UniqueConstraint(columnNames={"nickename", "openid"})}) @Cache(usage = CacheConcurrencyStrategy.READ_WRITE) @org.springframework.data.elasticsearch.annotations.Document(indexName = "wxuser") public class WxUser implements Serializable { ​ private static final long serialVersionUID = 1L; ​ @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; ​ @Column(name = "openid") private String openid; ​ @Column(name = "nickname") private String nickname; ​ @Column(name = "sex") private Long sex; }

如果有多个需要组合添加到@Table, 用逗号隔开就好.

uniqueConstraints={@UniqueConstraint(columnNames = {"nickename", "openid"}),@UniqueConstraint(columnNames = "column2", "column3")})

Jhipster设置

Jhipster使用Liquibase 生成数据库的表, 不但需要在域对象(domain)上使用jpa的标注, 还要修改liquibase对应的xml文件.如 WxUser文件.

34a219d14fea8708fd720bc69dbd8af6.png

打开这个文件, 找到 openid, 添加 unique="true", 如下图:

2a64bcc1d461a4f329bd305ed8b543d7.png

那么如何添加多个字段组合唯一性, 比如 组合 nickname 和 openid 为唯一性, 道 liquibase的xml文件中呢? 需要打开如下的xml文件,

3db521990619ba847780defcd59207cf.png

添加如下changeSet就可以了

复制代码
1
2
3
4
5
6
7
<changeSet author="liquibase-docs" id="addUniqueConstraint-example"> <addUniqueConstraint columnNames="nickname, openid" constraintName="your_constraint_name" tableName="wx_user" /> </changeSet>

Jhipster交流和学习:

  1. 添加QQ群: 884675737
  2. 关注公众号: szit0755

最后

以上就是英勇黄蜂最近收集整理的关于mysql 如何去掉字段唯一约束_Jhipster - JPA 如何设置字段的唯一性(Unique)的全部内容,更多相关mysql内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(62)

评论列表共有 0 条评论

立即
投稿
返回
顶部