在Ebean orm中执行原始sql

时间:2017-01-19 13:12:20

标签: playframework orm ebean

我一直在苦苦挣扎,但不知何故无法让它发挥作用。我所有的资源都耗尽了,现在我转向你寻求建议。

我有以下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).???
    

非常感谢任何帮助或指出我正确的方向。

0 个答案:

没有答案