我在这里遇到了一个小问题。基本上我们有一个表,其中的列不是 PK 但需要是唯一的,因此我们在其上添加了唯一性约束。现在,在我们的服务层中,我们希望捕获当有人创建打破唯一性约束的记录时生成的异常,并返回已经存在的记录而不是创建新记录。
基本上,代码如下所示:
ObjectDto object = null;
try {
object = convertToDto(objectDao.create(convertToModel(pObject)));
}
catch (PersistenceException e) {
object= getByLabel(pObject.getLabel());
}
return object;
这......有效,同时又无效。我们正确地捕获了异常并返回了 getByLabel() 方法检索到的对象,但 JUnit 仍然显示错误,因此我们的单元测试未通过:
javax.persistence.PersistenceException: org.hibernate.exception.ConstraintViolationException: could not execute statement
还有其他方法来处理这些用例吗?
编辑:
ObjectDto object = new ObjectDto();
object .setLabel("XXX");
object = objectService.create(object);
ObjectDto object2 = new ObjectDto();
object2.setLabel("XXX");
object2 = objectService.create(object2);
最佳答案
用以下内容注释您的测试方法:
@Test(expected=PersistenceException.class)
这样 jUnit 就会知道会抛出异常。
关于java - 使用 Hibernate ConstraintViolationException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36790573/