• java.sql.SQLException: Cannot set createTime: incompatible types


    今日在写OrderDaoImpl类,进行测试一直报错,起初以为是Order类的名字与数据库不同引起,在查询函数中起了别名来解决,但一直报Cannot set createTime错误,上网找了说法,都说是名字要对上,偶然间看到一篇sql错误记录中有一样的错误,照着改可以运行出结果。
    sql错误记录错误链接

    未改变之前的Order类

    public class Order {
        private String orderId;
        private Date createTime;
        private BigDecimal totalMoney;
        // 0 未发货,1 已发货,2 表示已签收
        private Integer status;
        private Integer userId;
    
        public Order() {
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    t_order数据库:
    在这里插入图片描述

    OrderDaoImpl类

        public List<Order> queryOrders() {
            String sql = "select `order_id` orderId,`create_time` createTime,`total_money` totalMoney,`status`,`user_id` userId from t_order";
            return queryForList(Order.class,sql);
        }
    
    • 1
    • 2
    • 3
    • 4
    八月 08, 2022 10:16:33 下午 com.alibaba.druid.support.logging.JakartaCommonsLoggingImpl info
    信息: {dataSource-1} inited
    java.sql.SQLException: Cannot set createTime: incompatible types. Query: select `order_id` orderId,`create_time` createTime,`total_money` totalMoney,`status`,`user_id` userId from t_order Parameters: []
    	at org.apache.commons.dbutils.QueryRunner.rethrow(QueryRunner.java:542)
    	at org.apache.commons.dbutils.QueryRunner.query(QueryRunner.java:399)
    	at com.study.dao.Impl.BaseDao.queryForList(BaseDao.java:71)
    	at com.study.dao.Impl.OrderDaoImpl.queryOrders(OrderDaoImpl.java:24)
    	at com.study.test.OrderDaoImplTest.queryOrders(OrderDaoImplTest.java:26)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    	at java.lang.reflect.Method.invoke(Method.java:498)
    	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
    	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
    	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
    	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
    	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
    	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
    	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
    	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
    	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
    	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
    	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
    	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
    	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
    	at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
    	at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69)
    	at com.intellij.rt.junit.IdeaTestRunner$Repeater$1.execute(IdeaTestRunner.java:38)
    	at com.intellij.rt.execution.junit.TestsRepeater.repeat(TestsRepeater.java:11)
    	at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:35)
    	at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:235)
    	at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:54)
    
    java.lang.NullPointerException
    	at com.study.test.OrderDaoImplTest.queryOrders(OrderDaoImplTest.java:27)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    	at java.lang.reflect.Method.invoke(Method.java:498)
    	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
    	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
    	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
    	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
    	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
    	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
    	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
    	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
    	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
    	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
    	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
    	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
    	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
    	at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
    	at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69)
    	at com.intellij.rt.junit.IdeaTestRunner$Repeater$1.execute(IdeaTestRunner.java:38)
    	at com.intellij.rt.execution.junit.TestsRepeater.repeat(TestsRepeater.java:11)
    	at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:35)
    	at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:235)
    	at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:54)
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60

    修改后的Order类,其中导入包为import java.sql.Timestamp;

    public class Order {
        private String orderId;
        private Timestamp createTime;
        private BigDecimal totalMoney;
        // 0 未发货,1 已发货,2 表示已签收
        private Integer status;
        private Integer userId;
    
        public Order() {
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    解决方法:可以看到create_time在数据库中是datetime类型,在Order类中是Date()类型,结果报错,将Order类中createTime类型由Data改为Timestamp就可以了。

    小结:

    1. 查询中表中字段名要与bean类中的对应字段命名相同,不然就需要在查询语句中用别名。
    2. 查询中表中字段类型要与bean类中的对应字段命名类型相对应
    3. 在bean类中要创建一个无参构造器
      1对应Cannot set createTime: incompatible types
      2和3 对应该错误:java.sql.SQLException:Cannot create
    > 数据库字段类型                  bean字段类型
    > int                             int
    > varchar	 					 String
    > datetime						 timestamp
    > 
    
    • 1
    • 2
    • 3
    • 4
    • 5
  • 相关阅读:
    【Servlet】7:监听器和过滤器的原理和应用
    基于PyTorch搭建你的生成对抗性网络
    DBeaver:强大实用的跨平台数据库工具 | 开源日报 No.71
    『现学现忘』Git基础 — 3、Git介绍
    【数据结构C/C++】双向链表的增删改查
    Nginx的配置
    Java—类加载机制
    淘宝店铺订单解密接口/淘宝店铺订单插旗接口/淘宝店铺订单交易接口/淘宝店铺商品上传接口/淘宝店铺订单明文接口/代码对接分享
    GitHub 官宣:弃用 trending 热榜,开发者炸锅了
    openMMLab的mmcv和mmdet、mmdet3d、mmseg版本对应关系
  • 原文地址:https://blog.csdn.net/weixin_51187775/article/details/126237437