2014-01-25 27 views
1

helllo比较光滑的查询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:这里是实用程序文件:我已经明显增加它在classpath:https://github.com/pedrofurla/slick-demo/blob/master/src/main/scala/slickdemo/dal/JodaTimeSupport.scala,与此:

import models.JodaTimeSupport 

package models { 

    trait sqlite extends JodaTimeSupport {... 

回答

5
从创建

除了自己的隐MappedColumnTypejava.sql.Dateorg.joda.time.DateTime,你可以尝试流行油滑乔达映射器发现here on Github

+0

太棒了!谢谢 – lolveley

+0

很高兴帮助。祝你的项目好运! – Vidya