当前位置:   article > 正文

org.postgresql.util.PSQLException: Bad value for type long

bad value for type long

项目用 springboot+mybatis +mybatisplus, 数据库是:postgresql 。 执行查询时候返回错误。

org.springframework.dao.DataIntegrityViolationException: Error attempting to get column 'city_id' from result set.  Cause: org.postgresql.util.PSQLException: Bad value for type long : 
; Bad value for type long : ; nested exception is org.postgresql.util.PSQLException: Bad value for type long 

类型long的值不正确

完整错误信息如下

  1. org.springframework.dao.DataIntegrityViolationException: Error attempting to get column 'city_id' from result set. Cause: org.postgresql.util.PSQLException: Bad value for type long :
  2. ; Bad value for type long : ; nested exception is org.postgresql.util.PSQLException: Bad value for type long :
  3. at org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.doTranslate(SQLStateSQLExceptionTranslator.java:104)
  4. at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:72)
  5. at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:81)
  6. at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:81)
  7. at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:88)
  8. at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:440)
  9. at com.sun.proxy.$Proxy174.selectOne(Unknown Source)
  10. at org.mybatis.spring.SqlSessionTemplate.selectOne(SqlSessionTemplate.java:159)
  11. at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:108)
  12. at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:96)
  13. at com.sun.proxy.$Proxy204.getUser(Unknown Source)

java对象实体

mybatis mapper XML 文件

  1. <resultMap id="BaseResultMap" type="org.vo.UserVO">
  2. <id column="user_id" property="userId"/>
  3. <result column="city_id" property="cityId"/>
  4. <result column="sex" property="sex"/>
  5. <result column="header" property="header"/>
  6. <result column="nick_name" property="nickName"/>
  7. <result column="telphone" property="telphone"/>
  8. <result column="email" property="email"/>
  9. <result column="address" property="address"/>
  10. <result column="birthday" property="birthday"/>
  11. <result column="real_name" property="realName"/>
  12. <result column="local_address" property="localAddress"/>
  13. <result column="create_time" property="createTime"/>
  14. </resultMap>
  15. <select id="getUser" resultMap="BaseResultMap">
  16. SELECT *
  17. FROM c_user
  18. WHERE user_id = #{userId}
  19. </select>

数据库中 city_id 是空的。

在mysql是正常的。切换到postgresql  就会提示这样的错。

我把数据为空的字段赋值以后就不报错误了。

解决方案:直接在定义BaseResultMap时候定义字段类型 ResultType="Long"

【注意】一定是大写的Long。Long:用于表示long类型的包装类。long 不能等于null,但是包装类是对象可以为null。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/337061
推荐阅读
相关标签
  

闽ICP备14008679号