【发布时间】:2018-08-13 01:22:11
【问题描述】:
我想用 JDBI/Dropwizard 在 maraiDB 数据库中插入一行。
我的表格是用
生成的CREATE TABLE parameter (
job_id INT references job(id),
name VARCHAR(150) NOT NULL,
content VARCHAR(150) NOT NULL
);
并使用接口将数据插入数据库
@SqlUpdate("INSERT INTO parameter (job_id, name , content) VALUES " +
"(:job_id, :name , :content)")
long insert(
@Bind("job_id") int job_id,
@Bind("name") String name,
@Bind("content") String content);
现在当我通过
调用该方法时private final ParameterJDBI parameterJDBI;
public void insert() {
parameterJDBI.insert(1, "name", "value");
}
我收到一个错误
ERROR [2018-06-14 15:39:46,083] io.dropwizard.jersey.errors.LoggingExceptionMapper: Error handling a request: 700d318fa5724df6
! java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Long
我还将签名更改为长并将第一个参数更改为1L,但错误仍然存在。我不明白长对象来自哪里。
【问题讨论】:
-
您可以尝试将 job_id 定义为 long 吗?
-
我也这样做了。我都试过了。并得到同样的错误
-
您传递了
parameter,但在parameterJDBI上调用insert。这是故意的吗? -
job_id 是工作表的外键,你能用工作表结构更新问题吗,我认为类型不匹配
标签: java dropwizard jdbi