JDBI:插入数据时的Long / Interger异常

时间:2018-06-14 15:54:59

标签: java dropwizard jdbi

我想用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

我还将签名更改为long并将第一个参数更改为1L,但错误仍然存​​在。我不明白长物体的来源。

1 个答案:

答案 0 :(得分:0)

您正在使用@SqlUpdate,它返回一个int(已更新/插入的行数)。因此,您的方法声明应返回int或void。

如果要返回从SQL语句生成的密钥,则应添加@GetGeneratedKeys