You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JPA实体类中对应数据库唯一约束的字段注解是什么?

JPA实体类映射数据库唯一约束的注解方案

针对你的需求,有两种常用的JPA注解方式来映射数据库的唯一约束:

方式一:直接在@Column注解中配置

这是最简单的单列唯一约束映射方式,直接给目标属性的@Column注解添加unique = true参数即可:

package com.fnptechnologies.logic.resto;

import java.io.Serializable;

import jakarta.persistence.Basic;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.Table;
import jakarta.validation.constraints.NotNull;
import lombok.Data;

@Entity
@Data
@Table(name = "t_pos_calendrier_serveur")
public class TPosCalendrierServeur implements Serializable {
    
    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "id")
    private Integer id;

    // 直接在@Column中设置unique=true来映射唯一约束
    @Column(name = "mmc_user_id", unique = true)
    @NotNull
    private int mmcUserId;
    
}

方式二:通过@Table注解的uniqueConstraints定义

如果需要给唯一约束指定自定义名称,或者要配置多列联合唯一约束,可以使用@Table注解的uniqueConstraints属性:

@Entity
@Data
// 通过@Table的uniqueConstraints定义带名称的唯一约束
@Table(name = "t_pos_calendrier_serveur", 
       uniqueConstraints = {
           @UniqueConstraint(columnNames = "mmc_user_id", name = "uk_t_pos_calendrier_serveur_mmc_user_id")
       })
public class TPosCalendrierServeur implements Serializable {
    
    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "id")
    private Integer id;

    @Column(name = "mmc_user_id")
    @NotNull
    private int mmcUserId;
    
}

注意事项

  • 第一种方式适合快速配置单列唯一,约束名称会由JPA自动生成,不同实现生成的名称格式可能不同;
  • 第二种方式更灵活,能自定义约束名方便后续数据库维护,也支持多列联合唯一(只需把columnNames改成数组形式,比如{"col1", "col2"})。

内容的提问来源于stack exchange,提问作者pheromix

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 09:51:04