2015-11-04 200 views
2

当列与数据库列不匹配时,我们在日志中获取异常,如下面的行。但它并没有抛出异常。我甚至不停地尝试抓住。我如何捕捉异常?捕捉休眠异常SqlExceptionHelper

WARN 2015-11-04 17:25:44,055 [SqlExceptionHelper.java:144]:SQL错误:904,SQLState:42000 错误2015-11-04 17 :25:44055 [HTTP-APR-8080-EXEC-4] [SqlExceptionHelper.java:146]:ORA-00904: “SH_RATE_DESCRIPTIO”:无效identi 费里

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;  
} 
} 

回答

1

只需设置日志级别此logger到致命。 在代码:

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> 
... 
0

Level.FATAL甚至吞下错误日志消息。设置

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

static某个任意类的初始化块做了窍门!