基本信息-我正在将Java 8与Spring MVC 5.2和Hibernate 5.4结合使用(使用Maven)
我具有以下数据对象类-
@Entity
@Table(name = "TaskDetails", uniqueConstraints = {@UniqueConstraint( columnNames = {"taskID", "processID"} )} )
public class TaskDetailsDo implements Serializable{
private static final long serialVersionUID = 1L;
@Id
@Column(name="contextID")
private String contextID;
@Column(name="taskID")
private String taskID;
@Column(name="processID")
private String processID;
(还有许多其他列,但此处不相关,因为它们都没有任何约束)。
现在,在我的数据访问对象类中,我只想在没有相同的taskID和processID组合的情况下保存对象。为此,我正在使用
public boolean save(TaskDetailsDo taskDetails) {
try {
getSession().save(taskDetails);
return true;
} catch(ConstraintViolationException e)
{
return false;
}
现在,这里的想法是,如果一个组合已经存在,它将抛出ConstraintViolationException,而我将有效地返回false,以表明该组合已经存在。但是,问题在于ConstraintViolationException还会捕获其他类型的Constraint Violations(例如,可能带有主键)。现在,我只想捕获一种特定类型的ConstraintViolationException,即由于唯一约束违规而抛出的一种。有什么方法可以检测到违反了哪个约束?
或者,还有另一种方法可以实现我正在寻找的功能吗?
谢谢。