2014-02-16 2 views
2

Мне нужно удалить несколько строк из таблицы в соответствии с некоторыми критериями. SQL-запрос должен быть таким:Как выполнить удаление пакета SQL с помощью Playframework 2/Ebean?

DELETE FROM tablename WHERE cond1 = 1 AND cond2 = 2 

Но я не нашел таких методов. Я могу удалить одну модель:

model.delete(); 

Или я могу получить список моделей accorsing с заданным critetias:

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

FYI: Также обратите внимание на версию Ebean версии 6.5.1 добавила ... удалить (запрос) - https://github.com/ebean-orm/avaje-ebeanorm/issues/398 –

Смежные вопросы