gpt4 book ai didi

java - 在 Quarkus 中捕获 Hibernate 异常

转载 作者:行者123 更新时间:2023-12-02 08:57:11 29 4
gpt4 key购买 nike

我正在尝试使用 Quarkus 构建一个小型 REST 服务。我正在使用 Hibernate 和 PostgreSQL 数据库。在所有好的情况下它都工作得很好。但是,当出现像 ConstraintViolationException 这样的 Hibernate 异常时,我无法以正常方式捕获它们。这些异常与其他异常 ArcUndeclaredThrowableExceptionRollbackException 一起包装。因此可以通过使用捕获异常

catch (ArcUndeclaredThrowableException e) {
...
}

存储库

@Dependent
public class UserRepository {

@Transactional
public void createUser(User user) {
getEntityManager().persist(user); //<- the constraint violation happens at commit, so when transaction will be closed
}
}

资源

    @Override
public Response createUser(@Valid CreateUserDTO createUserDTO, UriInfo uriInfo) {
...
try {
userRepository.createUser(user);
} catch (ArcUndeclaredThrowableException e) { //<- here the hibernate exception should be catchable
log.error(e.getMessage());
throw e;
}
return Response.ok().build();
}

由于此问题,也无法为 HibernateException 添加 ExceptionMapper。有人遇到过类似的问题吗?或者我的代码存在普遍问题吗?我正在使用 Java11。

最佳答案

我会这样做:

    try {
getEntityManager().persist(user);
getEntityManager().flush();
} catch(ConstraintViolationException e) {
throw new MyCustomException(e);
}

并为 MyCustomException 创建异常映射器。

关于java - 在 Quarkus 中捕获 Hibernate 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60422641/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com