如何使用Ebean(PlayFramework)删除几行?

时间:2014-02-12 15:21:49

标签: playframework-2.0 ebean

我需要根据给定数据删除少量rown:

DELETE FORM mytable WHERE cond1 = 1 AND cond2 = 2;

但我发现没有允许以给定方式删除对象的方法。有一种方法可以删除单个对象(Model.delete()),但它不是对象列表的有效方法。 我不想执行原始SQL请求,因为它取决于SQL方言,并且对SQL注入有风险。

那么实现这个查询的正确方法是什么?

3 个答案:

答案 0 :(得分:1)

您可能想尝试Ebean.createUpdate()。 正如javadoc所描述的,此方法接受ORM更新字符串。

  

orm更新与sql update的不同之处在于它可以使用   bean名称和bean属性名称,而不是表名和列名。

例如:

Update<Customer> upd = Ebean.createUpdate(Customer.class, "DELETE Customer WHERE email=:email");
upd.set("email", "someone@somewhe.re");
return upd.execute();

答案 1 :(得分:0)

使用com.avaje.ebean.SqlUpdate。即。

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

此外,还可以更新许多内容 - 另请参阅other answer

答案 2 :(得分:0)

我是这样做的:

Ebean.deleteAll(UserType.find.all());