4

I want to write a database schema using lifted slick. I have huge tables with more than 100 columns. So i have this error for all the tables that exceed 22 columns :

type Tuple45 is not a member of package scala

Here is the code of one of the tables :

object adrepost extends Table[(String, String, String, String, String, String, String,   String, String, String, String, String, String, String, String, String, String, Date, Boolean, Date, Int, Boolean, String, String, String, String, String, Boolean, Boolean, String, String, Boolean)]("ADREPOST") {

def codeadrp = column[String]("CODEADRP", O.PrimaryKey, O.NotNull,O.DBType("VARCHAR(7)"))
def codecivi = column[String]("CODECIVI", O.NotNull, O.DBType("VARCHAR(3)"))
def nom1 = column[String]("NOM1", O.NotNull, O.DBType("VARCHAR(32)"))
def nom2 = column[String]("NOM2", O.NotNull, O.DBType("VARCHAR(32)"))
def complt1 = column[String]("COMPLT1", O.NotNull, O.DBType("VARCHAR(32)"))
def complt2 = column[String]("COMPLT2", O.NotNull, O.DBType("VARCHAR(32)"))
def voienum = column[String]("VOIENUM", O.NotNull, O.DBType("VARCHAR(10)"))
def voienom = column[String]("VOIENOM", O.NotNull, O.DBType("VARCHAR(32)"))
def codepays = column[String]("CODEPAYS", O.NotNull, O.DBType("VARCHAR(3)"))
def codecpced = column[String]("CODECPCED", O.NotNull, O.DBType("VARCHAR(10)"))
def codeinsee = column[String]("CODEINSEE", O.NotNull, O.DBType("VARCHAR(10)"))
def codeetat = column[String]("CODEETAT", O.NotNull, O.DBType("VARCHAR(8)"))
def telephone = column[String]("TELEPHONE", O.NotNull, O.DBType("VARCHAR(18)"))
def telephone2 = column[String]("TELEPHONE2", O.NotNull, O.DBType("VARCHAR(18)"))
def telecopie = column[String]("TELECOPIE", O.NotNull, O.DBType("VARCHAR(18)"))
def email = column[String]("EMAIL", O.NotNull, O.DBType("VARCHAR(64)"))
def argument = column[String]("ARGUMENT", O.NotNull, O.DBType("VARCHAR(16)"))
def ddn_crea = column[Date]("DDN_CREA")
def top_robins = column[Boolean]("TOP_ROBINS", O.NotNull)
def dat_maj = column[Date]("DAT_MAJ", O.NotNull)
def nb_npai = column[Int]("NB_NPAI", O.NotNull)
def top_noloca = column[Boolean]("TOP_NOLOCA", O.NotNull)
def siren = column[String]("SIREN", O.NotNull, O.DBType("VARCHAR(9)"))
def nic = column[String]("NIC", O.NotNull, O.DBType("VARCHAR(5)"))
def codenaf = column[String]("CODENAF", O.NotNull, O.DBType("VARCHAR(5)"))
def id_fiscale = column[String]("ID_FISCALE", O.NotNull, O.DBType("VARCHAR(15)"))
def matchcode = column[String]("MATCHCODE", O.NotNull, O.DBType("VARCHAR(18)"))
def top_erobin = column[Boolean]("TOP_EROBIN", O.NotNull)
def top_seg = column[Boolean]("TOP_SEG", O.NotNull)
def codelang = column[String]("CODELANG", O.NotNull, O.DBType("VARCHAR(3)"))
def codeutil = column[String]("CODEUTIL", O.NotNull, O.DBType("VARCHAR(3)"))
def inactivee = column[Boolean]("INACTIVEE", O.NotNull)

def * = codeadrp ~ codecivi ~ nom1 ~ nom2 ~ complt1 ~ complt2 ~ voienum ~ voienom ~ codepays ~ codecpced ~ codeinsee ~ codeetat ~ telephone ~ telephone2 ~ telecopie ~ email ~ argument ~ ddn_crea ~ top_robins ~ dat_maj ~ nb_npai ~ top_noloca ~ siren ~ nic ~ codenaf ~ id_fiscale ~ matchcode ~ top_erobin ~ top_seg ~ codelang ~ codeutil ~ inactivee

def idx1 = index("adrepost_argument", (argument), unique = true)
def idx2 = index("adrepost_codecpced", (codecpced), unique = true)
def idx3 = index("adrepost_commune", (codepays, codecpced, codeinsee), unique = true)
def idx4 = index("adrepost_matchcode", (matchcode), unique = true)
def idx5 = index("adrepost_nom1", (nom1), unique = true)
}  

Any ideas for how to solve this problem ??

1 Answers1

3

You should take a look at using nested tuples to solve this problem. The following post was helpful for me:

https://groups.google.com/forum/#!msg/scalaquery/qjNW8P7VQJ8/ntqCkz0S4WIJ

Stefan uses comments in the code to help walk you through what is being done.

Side note: at a Slick talk a couple weeks ago, I was informed that this restriction is being addressed in the next version, which will be released soon.

Andrew Jones
  • 1,382
  • 10
  • 26
  • This is correct. Or you can use Slick master (which you have to compile yourself), which will be released soon and supports HLists with not length limitation. See https://github.com/slick/slick/blob/master/slick-testkit/src/main/scala/com/typesafe/slick/testkit/tests/MapperTest.scala#L249 – cvogt Oct 04 '13 at 19:29
  • Didn't realize we were able to get the new release. Your talk in NYC is where I heard about the new feature :) – Andrew Jones Oct 04 '13 at 19:44