【问题标题】:return id in ON DUPLICATE KEY in JOOQ在 JOOQ 中的 ON DUPLICATE KEY 中返回 id
【发布时间】:2014-12-14 09:20:46
【问题描述】:

我真正想要的是在 JOOQ 中编写以下查询:

stmt = connection.prepareStatement(
    "INSERT INTO `tbl` (`name`, `service_id`, `device_id`) VALUES (?, ?, ?) ON DUPLICATE KEY UPDATE `id` = LAST_INSERT_ID(`id`)", 
    Statement.RETURN_GENERATED_KEYS
);

我无法在 JOOQ 中找到执行此操作的方法。有可能吗?

【问题讨论】:

    标签: java mysql jooq on-duplicate-key


    【解决方案1】:

    目前(从 jOOQ 3.4-3.6 开始),由于 jOOQ 的 INSERT API 存在缺陷,这是不可能的:

    【讨论】:

      【解决方案2】:

      这可能会对您有所帮助。暂时我正在使用这个:

      Field<Integer> LAST_INSERT_ID = DSL.function("LAST_INSERT_ID", Integer.class, PACKAGE.ID);
      
      dsl.insertInto(PACKAGE)
         .set(dsl.newRecord(PACKAGE, packagePojo))
         .onDuplicateKeyUpdate()
         .set(PACKAGE.ID, LAST_INSERT_ID)
         .set(PACKAGE.PTR_JOB, packagePojo.getPtrJob())
         .set(PACKAGE.PACK_NUMBER, packagePojo.getPackNumber())
         .set(PACKAGE.RACK, packagePojo.getRack()
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-04-28
        • 2010-10-21
        • 2017-02-09
        • 2014-06-23
        • 1970-01-01
        • 2018-05-19
        • 2013-01-14
        • 2015-12-10
        相关资源
        最近更新 更多