2014-02-16 47 views
2

我需要根据一些标准从表中删除一些行。 SQL查询应该是这样的:如何使用Playframework 2/Ebean执行SQL批量删除?

DELETE FROM tablename WHERE cond1 = 1 AND cond2 = 2 

但我没有发现这样的方法。我可以删除的单一模式:

model.delete(); 

或者,我可以得到的型号清单给定critetias accorsing:

Model.FINDER.where().eq("cond1", 1).eq("cond2", 2).findList(); 

关当然,我可以得到的型号列表和循环删除它们,但这是非常糟糕的解决方案。而不是一个SQL请求我得到潜在的无限SQL请求。 我也不想执行原始SQL代码,因为它可能会破坏SQL跨平台兼容性。

这确实是经常的任务。 Play Framework无法与之搭配吗?

回答

5

确实删除对象一个接一个是坏的解决方案,幸好Ebean允许您执行SqlUpdate,如:

SqlUpdate tangoDown = Ebean.createSqlUpdate("DELETE FROM table_name WHERE id = 123"); 
tangoDown.execute(); 

看到:other question的参数化查询。

+2

供参考:同时注意版本Ebean版本6.5.1增加了...删除(查询) - https://github.com/ebean-orm/avaje-ebeanorm/issues/398 –