当前位置: 首页 > 知识库问答 >
问题:

捕获hibernate异常SqlExceptionHelper

薄瑞
2023-03-14

当该列与数据库列不匹配时,我们将在日志中获得以下行的异常。但它并没有破例。我甚至保留了尝试接球。我怎样才能抓住例外?

WARN 2015-11-04 17:25:44055[http-apr-8080-exec-4][SqlExceptionHelper.java:144]:SQL错误:904,SQLState:42000错误2015-11-04 17:25:44055[http-apr-8080-exec-4][SqlExceptionHelper.java:146]:ORA-00904:“shu RATE\u description”:无效标识符

 import javax.persistence.EntityManager;
 import javax.persistence.PersistenceContext;

 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Repository;

 import com.core.model.entity.ShippingTable;

 @Repository("sTableDAO")
 public class STableDao {


 @PersistenceContext(unitName = "somaUnit")
 private EntityManager entityManager;


 public STable save(STable sTable) {    
    try{
        sTable = entityManager.merge(sTable);
    }catch(Exception e){
        e.printStackTrace();
    }
    return sTable;      
 }  
}

共有3个答案

赏逸春
2023-03-14

只需将此记录器的日志级别设置为致命。在守则中:

private static Logger logger = org.apache.log4j.Logger.getLogger("org.hibernate.engine.jdbc.spi.SqlExceptionHelper");
logger.setLevel(Level.FATAL);

或:

...
<!-- ADDED THE FOLLOWING -->
<logger category="org.hibernate.engine.jdbc.spi.SqlExceptionHelper">
<level name="FATAL"/>
</logger>
...
阎宾实
2023-03-14

级别。致命甚至吞下了错误日志消息。背景

org.apache.log4j.Logger.getLogger("org.hibernate.engine.jdbc.spi.SqlExceptionHelper")
    .setLevel(Level.ALL);

在某个任意类的静态初始值设定项块中实现了这个技巧!

杭胜
2023-03-14

尝试从数据完整性违反异常获取消息

catch (DataIntegrityViolationException ex) {
   handleException(ex.getRootCause().getMessage()) /*get the message and handle it*/
}
 类似资料:
  • 我正在尝试使用Quarkus构建一个小型REST服务。我正在使用Hibernate和PostgreSQL数据库。它在所有好的情况下都非常有效。但是当出现Hibernate异常时,比如,我无法以正常方式捕获它们。异常被包装为其他异常和。因此,可以通过使用 存储库 资源 由于这个问题,也无法为HibernateException添加一个。是否有人遇到过类似的问题,或者我的代码存在一般性问题?我正在使用

  • 问题内容: 我正在为Android开发Java应用程序,目前遇到了一个问题,调试器正在进入catch块,并且ex为何为null?有人看过这样的东西吗? 问题答案: 这听起来像源代码,并且编译的类不同步,因此调试器正在进入错误的块。 尝试进行清理,然后进行重建。

  • 5.10. Recover捕获异常 通常来说,不应该对panic异常做任何处理,但有时,也许我们可以从异常中恢复,至少我们可以在程序崩溃前,做一些操作。举个例子,当web服务器遇到不可预料的严重问题时,在崩溃前应该将所有的连接关闭;如果不做任何处理,会使得客户端一直处于等待状态。如果web服务器还在开发阶段,服务器甚至可以将异常信息反馈到客户端,帮助调试。 如果在deferred函数中调用了内置函

  • 异常处理器放在 catch 块中。每个catch块以关键字catch开始,接着是括号内包含的类型(表示该块处理的异常类型)和可选参敷名.后面是用花括号括起来的描述异常处理器的代码。捕获异常时,执行 catch 块中的代码。 catch 处理器定义自己的范围。catch在括号中指定要捕获的对象类型。cateh处理器中的参数可以命名也可以无名。如果是命名参数,则可以在处理器中引用这个参数。如果是无名参

  • export class SearchService { ... .map((response) => response.json()) .catch((e) => { if (e.status >== 500) { return cachedVersion(); new Error(`${ e.status