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 が提供する型安全性の一部を失うことになります。