
问题提出
如果有一个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; }
解决方法
- 如果只要保证一个字段, 比如这里就是 列 openid唯一, 只需要 添加 " unique=true " 到@Column注解就可以.
@Column(name = "openid", , unique=true) private String openid; - 如果需要多个字段组合唯一性, 比如 组合 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文件.

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

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

添加如下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交流和学习:
- 添加QQ群: 884675737
- 关注公众号: szit0755
最后
以上就是英勇黄蜂最近收集整理的关于mysql 如何去掉字段唯一约束_Jhipster - JPA 如何设置字段的唯一性(Unique)的全部内容,更多相关mysql内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复