我查看了使用squeryl从表中删除所有记录的方法。我能想到的唯一方法是
myTable.deleteWhere(r => r.id.isNotNull) //id is the primary key
这似乎有些奇怪,可能也不太高效。
在使用squeryl时,清除表中所有记录的最简洁方法是什么?
我查看了使用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
或另一个等效函数,则可以从org.squeryl.Session
获取java.sql.Connection
并直接通过JDBC发出查询。不幸的是,这将失去Squeryl提供的某些类型安全性。
deleteWhere
子句而言它的相关性较小,但仍然可能有用。 - jcern