helllo
我无法调整此代码示例: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 {...
答案 0 :(得分:5)
除了从MappedColumnType
到java.sql.Date
创建您自己的隐式org.joda.time.DateTime
之外,您还可以尝试找到受欢迎的 slick-joda-mapper here on Github