如何使用Playframework 2/Ebean执行SQL批量删除?

bvi*_*iyg 2 ebean playframework-2.0 playframework-2.2

我需要根据一些标准从表中删除一些行.SQL查询应该是这样的:

DELETE FROM tablename WHERE cond1 = 1 AND cond2 = 2
Run Code Online (Sandbox Code Playgroud)

但我发现没有这样的方法.我可以删除一个模型:

model.delete();
Run Code Online (Sandbox Code Playgroud)

或者我可以获得符合给定标准的模型列表:

Model.FINDER.where().eq("cond1", 1).eq("cond2", 2).findList();
Run Code Online (Sandbox Code Playgroud)

当然,我可以获得模型列表并在循环中删除它们,但这是非常糟糕的解决方案.我没有获得一个SQL请求,而是获得了无限的SQL请求.我也不想执行原始SQL代码,因为它可以破坏SQL跨平台兼容性.

这经常是一项任务.Play Framework是否无法使用它?

bie*_*ior 5

确实一个一个地删除对象是不好的解决方案,幸运的是Ebean允许你执行SqlUpdate如下操作:

SqlUpdate tangoDown = Ebean.createSqlUpdate("DELETE FROM table_name WHERE id = 123");
tangoDown.execute(); 
Run Code Online (Sandbox Code Playgroud)

请参阅:参数化查询的其他问题.

  • 仅供参考:另请注意版本Ebean版本6.5.1已添加...删除(查询) - https://github.com/ebean-orm/avaje-ebeanorm/issues/398 (2认同)