2

私はScalaにかなり慣れておらず、現在、MySQLデータベースに対してSquerylと呼ばれるORMを使用しています。

私がやろうとしているのは、時間範囲内にある複数のレコードを検索することです。たとえば、プレーンSQLでは、次のようになると思います。

    SELECT * FROM records WHERE updated_at >= ? AND updated_at < ? 

ただし、以下と同様の動作を実現するためのScalaコードでは、「from(records)」の最初の括弧に「java.util.Dateはパラメーターを取りません」というエラーが表示されます。

    def getRecordsBetween(from:java.util.Date, til:java.util.Date):List[Record]
      transaction {
        from(records)(record =>
          where(
            record.updatedAt gte from and
            record.updatedAt lt til
          )
          select(record)
        ).toList
      }
    }

(ここで、val records = tableRecord

私はここで何が間違っているのですか?よろしくお願いします。

4

1 に答える 1

3

メソッドパラメーターとメソッドはScalaの同じ名前空間にあるため、メソッドパラメーターは、スコープに持ち込んだ(または)オブジェクトのメソッドを次のような行fromで「シャドウイング」します。fromPrimitiveTypeModeCustomTypeMode

import org.squeryl.PrimitiveTypeMode._

パラメータ名をfromDateorなどに変更するだけstartで問題ありません。

于 2012-07-15T13:39:05.803 に答える