我已经研究了使用 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
或其他等效功能,您可以直接通过 JDBC 获取java.sql.Connection
并org.squeryl.Session
发出查询。不幸的是,这将失去 Squeryl 提供的一些类型安全性。