2012-08-24 32 views

回答

2

對不起,我沒有時間來測試它適合你,但這裏是一個可能的解決方案。

首先定義一個隱式變壓器,其能夠將列內容轉換爲字節數組:

implicit def rowToByteArray: Column[Array[Byte]] = Column.nonNull { (value, meta) => 
    val MetaDataItem(qualified, nullable, clazz) = meta 
    value match 
    case data: Array[Byte] => Right(data) 
    case _ => Left(TypeDoesNotMatch("Cannot convert " + value + ":" + value.asInstanceOf[AnyRef].getClass + " to Byte Array for column " + qualified)) 
    } 

然後你就可以定義一個適當的行解析器工廠:

def bytes(columnName: String): RowParser[Array[Byte]] = get[Array[Byte]](columnName)(implicitly[Column[Array[Byte]]]) 

最後只是用它:

val images:List[String~Array[Byte]] = { 
    SQL("select * from Image").as(str("name") ~ bytes("data") *) 
} 
相關問題