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

标签 playframework-2.0 ebean playframework-2.2

我需要根据某些条件从表中删除一些行。 SQL 查询应该是这样的:

DELETE FROM tablename WHERE cond1 = 1 AND cond2 = 2

但是我没有找到这样的方法。我可以删除单个模型:

model.delete();

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

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

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

这确实是一项经常性的任务。 Play Framework 无法使用它是真的吗?

最佳答案

确实,一个一个地删除对象是不好的解决方案,幸运的是 Ebean 允许您执行 SqlUpdate喜欢:

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

参见:other question用于参数化查询。

关于playframework-2.0 - 如何使用 Playframework 2/Ebean 执行 SQL 批量删除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21813138/

相关文章:

java - 将主键作为外键映射到另一个表

java - 为什么 Ebean 中的关系使用 java.util.List 而不是 java.util.Set

mysql - 如何在play framework中使用ebean和mysql?

mysql - Playframework 2.2 和 Heroku : Unable to connect to non-Heroku database

scala - 使用动态外部项目构建 SBT 多项目?

scala - 为方法 Apply 提供太多参数

java - 错误 ValidationException : Call to TraversableResolver. isReachable() 引发异常

scala - Play Framework 未在 "Start"模式下绑定(bind)端口

scala - SecureSocial : Running DB IO in a separate thread pool