2017-03-15 1 views
1

slick 및 slick-codegen (3.2.0)의 현재 버전을 sqlite 데이터베이스와 함께 사용하려고합니다. 표를 나열하려고하면 이름이 올바르게 표시됩니다. 그러나 테이블에 해당하는 클래스를 생성하려고하면 출력이 표시되지 않습니다.Slick codegen 출력을 제공하지 않습니다.

이 작동 : 작동하지 않습니다,

MTable(MQName(models),TABLE,null,None,None,None) 
MTable(MQName(users),TABLE,null,None,None,None) 

그러나, 다음과 같은 코드가 같은 방식으로 직접 실행할 :

object TableCodeGenerator extends App 
{ 
    val db = Database.forURL("jdbc:sqlite:/home/samik/db/mydb.db", driver = "org.sqlite.JDBC") 
    val dbio = SQLiteProfile.createModel(Some(MTable.getTables)) 
    val model = db.run(dbio) 

    val codegenFuture: Future[SourceCodeGenerator] = model.map(model => new SourceCodeGenerator(model)) 

    codegenFuture.onSuccess 
    { 
     case codegen => codegen.writeToFile(
      "org.sqlite.JDBC", 
      "/tmp", 
      "my.package.dao", 
      "Tables", 
      "Tables.scala") 
    } 
} 

object TableCodeGenerator extends App 
{ 
    val db = Database.forURL("jdbc:sqlite:/home/samik/db/mydb.db", driver = "org.sqlite.JDBC") 
    val tables = Await.result(db.run(MTable.getTables), 1 second).toList 
    tables.foreach(println) 
} 

나는 아래의 출력을 얻을

코드가 성공적으로 실행되었지만 출력 파일이 표시되지 않습니다. 내가 누락 된 것이 있습니까?

답변

0

기본 코드가 자동으로 예외를 throw하기 때문에 위의 상황이 발생했습니다. 이 예외의 이유는 sqlite의 "기능"을 사용했기 때문입니다. 스키마의 데이터 유형을 언급하지 않으면 sqlite는 텍스트 유형으로 간주합니다. 그러나 이는 매끄러운 코드에 문제를 만듭니다.

more details here. 즉각적인 해결책은 스키마를 수정하는 것이었지만 지금은 매끄럽게 수정되었다고 생각합니다.

관련 문제