3

我已经研究了使用 squeryl 从表中删除所有记录的方法。我唯一能想到的是

myTable.deleteWhere(r => r.id.isNotNull)  //id is the primary key

这看起来很奇怪,而且可能效率低下。

使用 squeryl 时从表中删除所有记录的最干净的方法是什么?

4

1 回答 1

4

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.Connectionorg.squeryl.Session发出查询。不幸的是,这将失去 Squeryl 提供的一些类型安全性。

于 2013-04-11T06:52:03.737 回答