H2 单元测试别名抱怨别名“AS [*]”
Posted
技术标签:
【中文标题】H2 单元测试别名抱怨别名“AS [*]”【英文标题】:H2 unit test alias complaining about alias "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
【问题讨论】:
【参考方案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)
【讨论】:
以上是关于H2 单元测试别名抱怨别名“AS [*]”的主要内容,如果未能解决你的问题,请参考以下文章