数据库时间为空时查询出现 UncategorizedSQLException: Error attempting to get column ‘update_time‘ from result set

Posted Acmen-zym

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库时间为空时查询出现 UncategorizedSQLException: Error attempting to get column ‘update_time‘ from result set相关的知识,希望对你有一定的参考价值。

异常详情

org.springframework.jdbc.UncategorizedSQLException: Error attempting to get column 'update_time' from result set.  Cause: java.sql.SQLException: Error
; uncategorized SQLException; SQL state [null]; error code [0]; Error; nested exception is java.sql.SQLException: Error
	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:92)
	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:441)
	at com.sun.proxy.$Proxy158.selectList(Unknown Source)
	at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:224)
	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.executeForIPage(MybatisMapperMethod.java:121)
	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:85)
	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:148)
	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89)
	at com.sun.proxy.$Proxy355.selectPage(Unknown Source)
	at com.hongmeng.service.auto_rule.impl.AutomaticRuleTemplateServiceImpl.findByPage(AutomaticRuleTemplateServiceImpl.java:192)

解决方案

重写时间日期类型的处理器,当值为null时直接返回,不执行处理方法

@Component
public class MybatisPlusLocalDateTimeTypeHandler extends LocalDateTimeTypeHandler 

    @Override
    public LocalDateTime getResult(ResultSet rs, String columnName) throws SQLException 
        Object object = rs.getObject(columnName);
        if (object == null) 
            return null;
        
        return super.getResult(rs, columnName);
    

@Component
public class MybatisPlusLocalDateTypeHandler extends LocalDateTypeHandler 

    @Override
    public LocalDate getResult(ResultSet rs, String columnName) throws SQLException 
        Object object = rs.getObject(columnName);
        if (object == null) 
            return null;
        
        return super.getResult(rs, columnName);
    

@Component
public class MybatisPlusLocalTimeTypeHandler extends LocalTimeTypeHandler 

    @Override
    public LocalTime getResult(ResultSet rs, String columnName) throws SQLException 
        Object object = rs.getObject(columnName);
        if (object == null) 
            return null;
        
        return super.getResult(rs, columnName);
    

以上是关于数据库时间为空时查询出现 UncategorizedSQLException: Error attempting to get column ‘update_time‘ from result set的主要内容,如果未能解决你的问题,请参考以下文章

当条件全部为空时,查询全部,当其中一个或两个条件为空时,为空的条件不查询,sql怎么写

解决用 VB 中用 ADO 访问 数据库时 SQL 查询处理 Null 值的问题( 使用 iff(isNull(字段), 为空时的值,不为空时的值) 来处理)

SQL Server 查询仅在没有变量为空时才有效

Laravel/Eloquent/DB 查询 - 当为空且不为空时加入

记录为空时,Access 2010 查询仍显示结果

为啥在获取 Users.ToListAsync() 不为空时会出现 SqlNullException