2016-12-16 5 views
0

をマッピングする方法を知りません。しかし、私はアクチベーターの実行を実行したとき、私は例外スリックは、与えられたタイプに以下

[error] Slick does not know how to map the given types. 
[error] Possible causes: T in Table[T] does not match your * projection. Or you use an unsupported type in a Query (e.g. scala List). 
[error] Required level: slick.lifted.FlatShapeLevel 
[error]  Source type: (slick.lifted.Rep[String], slick.lifted.Rep[String], slick.lifted.Rep[Option[Int]]) 
[error] Unpacked type: (Option[Int], String, Option[String]) 
[error]  Packed type: Any 
[error]  def * = (name, permissions, id.?) <> (GroupEntity.tupled, GroupEntity.unapply) 
[error]          ^
[error] one error found 
+0

エラーが発生した後?を追加する方法に注目してください。 – pedrofurla

答えて

2

の下に取得するだけのマッピングでは、あなたのタイプにOptionを追加私のコード

package com.codemobile.box.modules.groups.repo.sql 
import com.codemobile.box.core.services.DatabaseService 
import com.codemobile.box.modules.groups.model.GroupEntity 
trait GroupEntityTable { 
    protected val databaseService: DatabaseService 
    import databaseService.driver.api._ 
    class Groups(tag: Tag) extends Table[GroupEntity](tag, "groups"){ 
    val id = column[Int]("grp_id",O.PrimaryKey,O.AutoInc) 
    val name = column[String]("grp_name") 
    val permissions = column[String]("grp_permissions") 
    def * = (id, name, permissions) <> (GroupEntity.tupled, GroupEntity.unapply) 
    } 

    protected val groupsTableQuery = TableQuery[Groups] 

} 


package com.codemobile.box.modules.groups.model 
case class GroupEntity(id: Option[Int] = None, name: String, permissions : Option[String] = None) 

次のとおりです。

class Groups(tag: Tag) extends Table[GroupEntity](tag, "groups"){ 
    val id = column[Option[Int]]("grp_id",O.PrimaryKey,O.AutoInc) 
    val name = column[String]("grp_name") 
    val permissions = column[Option[String]]("grp_permissions") 
    def * = (id, name, permissions) <> (GroupEntity.tupled, GroupEntity.unapply) 
    } 

(私はidと01のためのcolumnをどのように変化するかを気づきます)

別の方法としては、これを行うことがあります。

class Groups(tag: Tag) extends Table[GroupEntity](tag, "groups"){ 
    val id = column[Int]("grp_id",O.PrimaryKey,O.AutoInc) 
    val name = column[String]("grp_name") 
    val permissions = column[String]("grp_permissions") 
    def * = (id.?, name, permissions.?) <> (GroupEntity.tupled, GroupEntity.unapply) 
    } 

(私は*投影を変更し、コードが一致しないidpermissions

+0

ソリューションありがとうございます – osleonard

関連する問題