H2 单元测试别名抱怨别名"AS[*]"



我有以下代码,当应用程序连接到mySql数据库时,这些代码运行良好。问题是单元测试使用H2,这在单词"1"处造成语法错误;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

想好了:

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)

最新更新