例如,我有两个表:
表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列上放置一个注解,它将优雅地处理它并返回一个好消息,还是我必须在异常中处理这个问题?或者我完全错了?
谢谢
暂无答案!
目前还没有任何答案,快来回答吧!