優れたsqueryl ORMフレームワークを使用して簡単なBaseDaoクラスを作成しようとしています。値===は、パラメータTKey(Squerylを使用)のメンバーではありません
しかし、一般的な型付きキーを使用すると問題が発生しました。ジェネリックBaseDaoクラスで '==='演算子を試してみると、コンパイルエラーが出ます。コンパイルエラーがある:値===タイプパラメータ処理鍵のメンバーではない
その面倒な方法と私のDAOクラスは次のように定義される。
abstract class BaseEntity[TKey] extends KeyedEntity[TKey]
:として定義される
import org.squeryl.PrimitiveTypeMode._
import org.squeryl._
abstract class BaseDao[TKey, T <: BaseEntity[TKey]](val table: Table[T]) {
def delete(entity: T) : Boolean = {
table.deleteWhere(record => record.id === entity.id) //This is where I get the compile error
}
}
BaseEntity
私のDaoクラスにもPrimitiveTypeModeをインポートしました... 私の最初のTKeyは、===演算子が制約されていたものに制約される必要がありましたが、ソースを見ると、オペレータの周りに明示的な制約があるので、私は少し失われています。
オペレータは、ここでsquerylのソースで定義されています:https://github.com/max-l/Squeryl/blob/master/src/main/scala/org/squeryl/dsl/TypedExpression.scala
スコープ内に、定義されているものがありますか?たとえば、scalazは型保証===を持っています。 –
こんにちは@TaylorLeese、私は質問に私のBaseDaoクラスで持っている2つのインポートを追加しました。これらの2つのインポートで、Daoクラスの具体的な実装は正常に動作します(つまり、===演算子はIntプロパティとInt引数で使用できます) – Robert
答えはhttps://groups.google .com/forum /?fromgroups =#!topic/squeryl/CiBatiSnIug – jcern