2017-02-23 3 views
1

ich glatt codegen zu verwenden Ich versuche eine Tables.scala Datei auf vorhandene Daten in einem SQL Server mit den folgenden Einstellungen basieren zu erstellen:Slick Codegen Mit SQLServer und dbo Schema

slick.codegen.SourceCodeGenerator.main(Array("slick.jdbc.SQLServerProfile", 
              "com.microsoft.sqlserver.jdbc.SQLServerDriver", 
              "jdbc:sqlserver://myserver.com:1433;applicationName=TestCodeGen;integratedSecurity=true;authenticationScheme=NativeAuthentication;databaseName=MYDB", 
              "src/main/scala/", 
              "com.mypackage", 
              "myUserId", 
              "")) 

Wenn ich den Befehl ausführen ich keine Fehler, sondern eine leere Tables.scala Datei erzeugt wird (es gibt Dutzende von Tabellen in der Datenbank):

package com.mypackage 
// AUTO-GENERATED Slick data model 
/** Stand-alone Slick data model for immediate use */ 
object Tables extends { 
    val profile = slick.jdbc.SQLServerProfile 
} with Tables 

/** Slick data model trait for extension, choice of backend or usage in the cake pattern. (Make sure to initialize this late.) */ 
trait Tables { 
    val profile: slick.jdbc.JdbcProfile 
    import profile.api._ 
    import slick.model.ForeignKeyAction 

    /** DDL for all tables. Call .create to execute. */ 
    lazy val schema: profile.SchemaDescription = profile.DDL(Nil, Nil) 
    @deprecated("Use .schema instead of .ddl", "3.0") 
    def ddl = schema 
} 

Mein Verdacht ist, dass es ein Problem mit der Tatsache ist, dass der SQL Server ein dbo-Schema verwendet, aber das Das Schema ist nirgendwo im Codegen-Aufruf angegeben (Alle Tabellen heißen "dbo..TableName").

Also meine Frage ist: muss ich 'dbo' irgendwo in codegen Konfiguration angeben und wenn ja, wie?

Wenn die Antwort ist, dass es nichts zu tun gibt, dann wie ich die Tatsache debuggen, dass Codegen offensichtlich scheitert, aber keine Fehler produziert?

Vielen Dank im Voraus für Ihre Berücksichtigung und Antwort.

Antwort

1

Obwohl für die direkte Verbindung funktioniert der com.microsoft Treiber funktioniert, habe ich für die Code-Generierung gefunden, müssen Sie in der Slick JDBC SQLServerProfile mit einem $ übergeben.

Array("slick.jdbc.SQLServerProfile", 
     "slick.jdbc.SQLServerProfile$", 
     "jdbc:sqlserver://myserver.com:1433;applicationName=TestCodeGen;integratedSecurity=true;authenticationScheme=NativeAuthentication;databaseName=MYDB", 
     "src/main/scala/", 
     "com.mypackage", 
     "myUserId", 
     "") 

Wenn das nicht funktioniert, versuchen Sie auch einen jtds Treiber Ihrer Bibliothek hinzufügen und mit einem jtds gestylt url:

"jdbc:jtds:sqlserver://myserver.com:1433;applicationName=TestCodeGen;integratedSecurity=true;authenticationScheme=NativeAuthentication;databaseName=MYDB" 

Wo Ihre jtds Abhängigkeit würde wie folgt aussehen:

libraryDependencies += "net.sourceforge.jtds" % "jtds" % "1.3.1" 
Verwandte Themen