сравнить 2 даты в гладком запросе кажется сложным

привет

Я не могу адаптировать этот пример кода: https://github.com/pedrofurla/slick-demo/blob/master/src/main/scala/slickdemo/domain/Person.scala.

он имеет дело со способностью сравнивать даты в гладком запросе. Сложность заключается в том, что вы не можете получить доступ к полю даты (чтобы извлечь, например, год, месяц и день), потому что запрос использует типы столбцов.

Я искал и нашел пример выше, но не могу его адаптировать.

вот мой код:

Таблица:

class Personnes( tag : Tag ) extends Table[ Rdv ]( tag, "RDV" ) {

     def id = column[ Int ]( "ID", O.PrimaryKey, O.AutoInc )
     def nom = column[ String ]( "NOM", O.NotNull )
     def prénom = column[ String ]( "PRENOM" )
     def sexe = column[ Int ]( "SEXE" )
     def télPortable = column[ String ]( "TELPOR" )
     def télBureau = column[ String ]( "TELBUR" )
     def télPrivé = column[ String ]( "TELPRI" )
     def siteRDV = column[ String ]( "SITE" )
     def typeRDV = column[ String ]( "TYPE" )
     def libelléRDV = column[ String ]( "LIBELLE" )
     def numRDV = column[ String ]( "NUMRDV" )
     def étape = column[ String ]( "ETAPE" )
     def dateRDV = column[ java.sql.Date ]( "DATE" )
     def heureRDVString = column[ String ]( "HEURE" )
     def statut = column[ String ]( "STATUT" )
     def orderId = column[ String ]( "ORDERID" )

     def * = ( id.?, nom, prénom, sexe, télPortable, télBureau, télPrivé,
        siteRDV, typeRDV, libelléRDV, numRDV, étape, dateRDV, heureRDVString,
        statut, orderId ) <> ( Rdv.tupled, Rdv.unapply _ )

  }

и метод:

def sqlite_findBetween( début : java.util.Date, fin : java.util.Date ) : List[ Rdv ]=  db_sqlite.withSession { implicit db : Session =>

   def débutTime:org.joda.time.DateTime = new DateTime(début)
   def finTime=new DateTime(fin)


     val query = for {
        p <- personnes
        if  (p.dateRDV > débutTime && finTime < p.dateRDV)
     } yield p
     query.list

  }

Спасибо!

ps: я забыл об ошибке: рядом со сравнением дат я получаю:

Cannot perform option-mapped operation with type: (java.sql.Date, org.joda.time.DateTime) => R for base type: (java.sql.Date, java.sql.Date) => Boolean

ps2: вот файл утилиты: я, очевидно, добавил его в путь к классам: https://github.com/pedrofurla/slick-demo/blob/master/src/main/scala/slickdemo/dal/JodaTimeSupport.scala, с этим:

import models.JodaTimeSupport

package models {

    trait sqlite extends JodaTimeSupport {...

person lolveley    schedule 25.01.2014    source источник


Ответы (1)


Помимо создания собственного неявного MappedColumnType от java.sql.Date до org.joda.time.DateTime, вы можете попробовать популярный slick-joda-mapper, найденный здесь, на Github.

person Vidya    schedule 25.01.2014
comment
Рад помочь. Удачи тебе с твоим проектом! - person Vidya; 26.01.2014