【问题标题】:H2 unit test alias complaining about alias "AS[*]"H2 单元测试别名抱怨别名“AS [*]”
【发布时间】:2021-03-17 10:46:16
【问题描述】:

当应用程序连接到 mySql 数据库时,我有以下代码运行良好。问题是单元测试使用 H2,这会导致“AS”一词出现语法错误,这意味着此处可能不支持别名。

    StringBuilder builder = new StringBuilder("INSERT INTO `ims`.`OrderEntries` (ORDER_ID, ITEM_ID, ITEM_QUANTITY) VALUES (?, ?, ?) AS NEW_INSERTION ");
    builder.append("ON DUPLICATE KEY UPDATE `ims`.`OrderEntries`.ITEM_QUANTITY = `ims`.`OrderEntries`.ITEM_QUANTITY + NEW_INSERTION.ITEM_QUANTITY");

    stmt = conn.prepareStatement(builder.toString(), 
                                 Statement.RETURN_GENERATED_KEYS);

有没有办法重写 SQL 语句使其与 H2 兼容?

INSERT INTO `ims`.`OrderEntries` (ORDER_ID, ITEM_ID, ITEM_QUANTITY) VALUES (?, ?, ?) AS NEW_INSERTION 
ON DUPLICATE KEY UPDATE `ims`.`OrderEntries`.ITEM_QUANTITY = `ims`.`OrderEntries`.ITEM_QUANTITY + NEW_INSERTION.ITEM_QUANTITY

【问题讨论】:

    标签: java mysql jdbc h2


    【解决方案1】:

    想通了:

    INSERT INTO `ims`.`OrderEntries` (ORDER_ID, ITEM_ID, ITEM_QUANTITY) VALUES (?, ?, ?) 
    ON DUPLICATE KEY UPDATE `ims`.`OrderEntries`.ITEM_QUANTITY =
    `ims`.`OrderEntries`.ITEM_QUANTITY + VALUES(ITEM_QUANTITY)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-31
      • 1970-01-01
      • 2021-11-09
      • 2012-03-23
      • 2021-09-29
      • 2013-10-25
      • 2016-07-06
      • 1970-01-01
      相关资源
      最近更新 更多