springboot中多个列上的唯一记录

fjaof16o  于 2021-06-21  发布在  Mysql
关注(0)|答案(0)|浏览(302)

例如,我有两个表:
表1:用户

userid
titleid (Links to title table below)
name
surname

表2:标题

titleid
title

用户实体类:

@Entity
@Table(name="user", 
       uniqueConstraints={@UniqueConstraint(name="user_unique", columnNames={"titleid", "name"})})
@NamedQuery(name="User.findAll", query="SELECT e FROM user e")
public class User implements Serializable {
    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    @Column(name="userid", insertable=false, updatable=false, unique=true, nullable=false)
    private long userId;

    //bi-directional many-to-one association to Title
    @ManyToOne(fetch=FetchType.EAGER)
    @JoinColumn(name="titleid")
    private Title title;

    @Column(name="name", nullable=false, length=45)
    @NotEmpty(message="Please enter name.")
    private String name;

在表1中,我希望titleid和name的组合是唯一的。我在数据库和实体上添加了如下约束:

uniqueConstraints={@UniqueConstraint(name="user_unique", columnNames={"titleid", "name"})})

现在,当我尝试插入或更新一条记录以使其与另一条记录完全相同时,我得到以下异常,这是100%正确的。

com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry for key 'user_unique'

我的问题是如何处理它在 Spring 开机?我使用的是最新版本的spring-boot、hibernate等。我是否可以在表1中的name列上放置一个注解,它将优雅地处理它并返回一个好消息,还是我必须在异常中处理这个问题?或者我完全错了?
谢谢

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题