我需要根据给定数据删除少量rown:
DELETE FORM mytable WHERE cond1 = 1 AND cond2 = 2;
但我发现没有允许以给定方式删除对象的方法。有一种方法可以删除单个对象(Model.delete()
),但它不是对象列表的有效方法。
我不想执行原始SQL请求,因为它取决于SQL方言,并且对SQL注入有风险。
那么实现这个查询的正确方法是什么?
答案 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());