我一直在苦苦挣扎,但不知何故无法让它发挥作用。我所有的资源都耗尽了,现在我转向你寻求建议。
我有以下SQL在Oracle DB中直接执行时按预期工作(如果记录存在则插入,否则更新):
MERGE INTO license_user dest
USING (SELECT 'uid' unquid, 3 lid FROM dual) src
ON (dest.unique_user_id = src.unquid AND dest.license_id = src.lid)
WHEN MATCHED THEN UPDATE SET dest.updated = sysdate
WHEN NOT MATCHED THEN INSERT (unique_user_id, license_id) VALUES (src.unquid, src.lid)
使用Ebean ORM和Play 2.5x框架开发项目。但是,我无法让Ebean执行此SQL语句。
最有希望的解决方案尝试过,但不起作用:
执行代码并根据返回的int影响1行,但更改不会反映到DB。 (如果我将普通插入放入此代码中,它可以工作并反映在DB中)
SqlUpdate query = Ebean.createSqlUpdate(sql);
int rowsAffected = query.execute();
我把SQL放到RawSql对象中,但我不知道如何执行它。最后,我没有做任何事情:findUnique或findList。我只是想执行。
RawSql raw = RawSqlBuilder.unparsed(sql);
Ebean.find(LicenseUser.class).setRawSql(raw).???
非常感谢任何帮助或指出我正确的方向。