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

概述

a561d0ff331394d734339dd343d254a5.png

问题提出

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

​
/**
 * 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注解里面, 如下:
@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就可以了

<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 如何去掉字段唯一约束_Jhipster - JPA 如何设置字段的唯一性(Unique)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部