使用 Hibernate 约束违规异常



我在这里为一个小问题而苦苦挣扎。基本上我们有一个表,其中列不是 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会知道会抛出异常。

最新更新