如何从带有squeryl的表中删除所有记录?

时间:2013-04-11 06:03:22

标签: mysql scala squeryl

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

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

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

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

1 个答案:

答案 0 :(得分:4)

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提供的安全类型。