Я рассмотрел способы использования squeryl для удаления всех записей из таблицы. Единственное, что я мог придумать, это
myTable.deleteWhere(r => r.id.isNotNull) //id is the primary key
Это кажется странным и, возможно, неэффективным.
Каков самый чистый способ удалить все записи из таблицы при использовании squeryl?
Предложение deleteWhere
принимает любое логическое логическое значение, поэтому вы можете просто сказать:
myTable.deleteWhere(r => 1 === 1)
Что должно выводить оператор:
DELETE FROM mytable WHERE 1 = 1
Если вы хотите автоматически исключить предложение where, вы можете попробовать:
myTable.deleteWhere(r => 1 === 1.inhibitWhen(true))
Что должно вообще подавлять предложение where.
Если вы ищете еще более эффективный метод, и ваша база данных поддерживает TRUNCATE
или другую эквивалентную функцию, вы можете получить java.sql.Connection
из org.squeryl.Session
и выдать запрос непосредственно через JDBC. К сожалению, это потеряло бы некоторые из предложений безопасности Squeryl.