- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
由于其复杂性,使用 Hibernate JPA 在 Oracle DB 中执行 native 查询,我想捕获从 SqlExceptionHelper
类抛出的 "ORA-01722: Nombre non valide "
之类的异常,但捕获的是:
class javax.persistence.PersistenceException: could not extract ResultSet
记录器错误跟踪我但没有捕获:
jdbc.spi.SqlExceptionHelper : ORA-01722: Nombre non valide
BigDecimal customerId = null;
try {
Query q = entityManager.createNativeQuery(
"select acc.account_id as customerId from Account ...");
customerId = (BigDecimal) q.getSingleResult();
} catch (Exception e) {
logger.info("CLASS : " + e.getClass());
if (e instanceof PersistenceException) { // should display ORA-01722: Nombre non valide ?
logger.info("ERRROR : " + e.getMessage());
throw new SQLException(e.getMessage());
}else
if (e instanceof SQLException) {
logger.info("ERRROR : " + e.getMessage());
throw new SQLException(e.getMessage());
}
logger.info("NOOOOOOOOOOOOO : " + e.getMessage());
throw new Exception(e.getMessage());
}
最佳答案
@Entity
@Table(uniqueConstraints = { @UniqueConstraint(columnNames = { "continentName" }) })
public class Continent implements Serializable
@NotEmpty(message = "continentName is a required field")
private String continentName;
在您的 Controller 中,您可以使用以下方法处理@NotEmpty:
@ExceptionHandler({ ConstraintViolationException.class })
public ResponseEntity<String> handleError1(HttpServletRequest req, Exception ex) {
String msg = null;
if (ex.getCause().getCause() instanceof ConstraintViolationException) {
ConstraintViolationException e = (ConstraintViolationException) ex.getCause().getCause();
Optional<ConstraintViolation<?>> optional = e.getConstraintViolations().stream().findFirst();
msg = optional.isPresent() ? optional.get().getMessageTemplate() : ex.getMessage();
}
return new ResponseEntity<>(msg, HttpStatus.CONFLICT);
}
这将返回“大陆名称是必填字段”
同样在 Controller 中,此方法将处理唯一约束违规。假设您已经输入了值“Brucrumus”并尝试再次输入:
@ExceptionHandler({ DataIntegrityViolationException.class })
public ResponseEntity<String> handleError2(HttpServletRequest req, Exception ex) {
String msg = ex.getMessage();
if (ex.getCause().getCause() instanceof SQLException) {
SQLException e = (SQLException) ex.getCause().getCause();
if (e.getMessage().contains("Key")) {
msg = e.getMessage().substring(e.getMessage().indexOf("Key"));
}
}
关于Java 捕获并显示 SqlExceptionHelper,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54323487/
我对 Hibernate (hibernate-core-4.1.9.Final.jar) 有疑问 案例 1:在 for 循环内进行 Hibernate 测试。一切顺利。 for(int i = 0;
我想“捕捉这条消息” 2018-11-26 00:44:53.175 WARN 14548 --- [nio-8080-exec-2] o.h.engine.jdbc.spi.SqlExceptio
由于其复杂性,使用 Hibernate JPA 在 Oracle DB 中执行 native 查询,我想捕获从 SqlExceptionHelper 类抛出的 "ORA-01722: Nombre n
错误 SqlExceptionHelper - 整数值不正确:'\xAC\xED\x00\x05sr\x00!com.domain.Client\xF3\xA5\x02\x0E\xC5d.\xA2\x
当列与数据库列不匹配时,我们在日志中收到如下异常。但它并没有抛出异常。我什至保留了 try catch。我怎样才能捕获异常? 警告 2015-11-04 17:25:44,055 [http-apr-
我有两个Grails域类(表)之间的Foriegn关键关系 class ServiceProvider { String name String address } class Fie
您好,我正在关注《行动》第 5 版书中的 spring,当我想从成分表中获取参数时遇到问题。在以下方法中,我尝试使用成分Repository.findAll() 填充列表: @GetMapping p
我的数据库中有一些表,我想获取有关对数据库的错误请求的信息。如果我试图用错误的外键保存实体,我想获取有关这些键的详细信息。 例如: 2020-03-25 18:37:37.595 ERROR 9788
我有一个托管在服务器(Tomcat 8.5)上的 Spring 应用程序。如果没有人使用它,它就会闲置。我已经知道如果数据库处于空闲状态8小时就会发生超时(MySQL的默认超时)。正如 Spring
我有以下域对象 @Table(uniqueConstraints={@UniqueConstraint(columnNames={"name", "company_id", "global"}, na
我正在尝试通过 flume 将使用聚集列存储索引的 DWH SQL Server 表中的数据导入到 kudu 中。但是,在我的自定义 flume 源从数据库中检索一定数量的行后,出现以下异常: Sql
我有一个 spring 应用程序,我有一个使用以下语法的 native 查询: select COUNT(DISTINCT person.id,(CASE WHEN salary_perso
我有一个 Spring 3.1、Hibernate 4 和 Primefaces 应用程序。它在我的本地计算机上运行良好,但是当我在我的 Web 主机上部署 ant 生成的 war 文件时,当我尝试登
我是 Java EE 新手,当我尝试通过 WEB-APP 从 HSQL DB 获取数据时,我在 Wildfly 控制台中收到此错误。 20:11:53,780 INFO [stdout] (defa
请帮忙。我是 hibernate 5 + MySQL 的新手,所以这可能是个愚蠢的场景。 我正在尝试创建一个非常基本的社交媒体应用程序,允许注册、登录和添加 friend 。我收到此错误: 23:47
在这里,我试图找到所有在我提供的范围内的实体。我的意思是,如果我给出一个特定半径的圆,它将必须显示位置坐标位于给定圆内的所有实体。 我正在使用 hibernate-spatial 来实现这一点。但是在
我最近将Grails应用程序部署到Tomcat,并在启动时遇到以下异常。 o.h.engine.jdbc.spi.SqlExceptionHelper 我不确定发生了什么。在BootStrap中创建所
下面是我在 ORACLE 中的查询,它出现了 ORA-00917:缺少逗号错误。 public boolean setFileDetails(String fileName,String fileTy
我已经尝试解决这个问题两天了,但没有任何效果。我将这些实体隐含在双向关系中。 @Entity @Table( name = "T_user" ) public class T_user impleme
我在尝试通过 hibernate 返回多个实体时遇到错误。根据文档我尝试了以下选择语句: sess.createSQLQuery("SELECT {a.*}, {b.*} FROM A a LEFT
我是一名优秀的程序员,十分优秀!