2013-07-12 2 views
7

Sto lavorando con 23 campi qui, all'ultimo conteggio. Generalmente ho alzato le mani cercando di contarle dopo averle ridotte da una tabella a 31 campi usando una chiave esterna.Limite di Scala 22 tenta di trovare una soluzione alternativa e di utilizzare ancora per le comprensibilità invece di SQL semplice in Slick

Tutti i buoni collegamenti

Fundamental explanation of how to read and understand Slick's schema code fornito da un ottimo Faiz.

Su 22+ parametri ...

Stefan Zeigar è stato immensamente utile nel codice di esempio che ha scritto in this discussion e anche più direttamente legata al here on Github

La buona Stefan Zeigar ha anche pubblicato here su SQL query pianura

che questo post è di circa

credo che quanto sopra è posta Non ho intenzione di farmi andare a un refactoring di lavoro della mia app in modo che CRUD sia fattibile. Aggiornerò questa domanda o porrò nuove domande se qualcosa mi viene in mente e mi ristagna. Il fatto è ...

Mi manca usare per la comprensione per l'interrogazione. Sto parlando di Slick's Query Templates

Il problema che ho incontrato quando uso una per comprensioni è che la tabella ... probabilmente avrà

object Monsters extends Table[Int]("monster_table"){ 
    // lots of column definitions 
    def * = id /* for a Table[Int] despite 
     having 21 other columns I'm not describing 
     in this projection/ColumnBase/??? */ 
} 

e la proiezione * Non descriverò tutto quello che voglio ritorno in una query.

La semplice al solito per il modello di comprensione interrogazione Slick sarà simile a questo:

def someQueryTemplate = for { 
    m <- Monsters 
} yield m 

e m sarà un Int anziché l'intero oggetto che voglio perché ho dichiarato il tavolo per essere un Table[Int]perché non riesco a costruire una proiezione mappato di 22 params a causa della all the code that needs to be generated for compiler support of class generation for each tuple and arbitrariness

Quindi ... in poche parole:


C'è un modo per utilizzare i modelli di query in Slick con 22+ colonne?

+0

Ho ridisegnato il mio schema alla fine, nel caso qualcuno si stesse chiedendo. – Meredith

+1

Ho notato [macro slick] (https://github.com/ebiznext/slick-macros) l'altro giorno. Sostiene +22 colonne per DB e altre cose interessanti. Forse è di qualche utilità per te. –

risposta

2

Mi sono imbattuto in questa domanda dopo aver risposto a una domanda simile un paio di giorni fa. Ecco un link alla domanda. slick error : type TupleXX is not a member of package scala (XX > 22)

Per rispondere alla domanda qui, è possibile utilizzare tuple annidate per risolvere il limite di 22 colonne. Quando ho risolto il problema personalmente, il seguente post è stato estremamente utile. https://groups.google.com/forum/#!msg/scalaquery/qjNW8P7VQJ8/ntqCkz0S4WIJ

Un'altra opzione consiste nell'utilizzare la versione di Slick che sta per essere rilasciata e che utilizza HLists per rimuovere la limitazione del numero di colonne. Questa versione di Slick può essere estratta dal ramo master Slick su Github. Complimenti a cvogt per sottolineare questa opzione. https://github.com/slick/slick/blob/master/slick-testkit/src/main/scala/com/typesafe/slick/testkit/tests/MapperTest.scala#L249

+0

Come si usa la versione di HList? Sto usando l'ultima Slick (2.0.0-M2) e continuo a ricevere l'errore. – sventechie

+1

Non ho ancora giocato con la nuova versione. L'utente cvogt ha parlato della funzione in uno dei suoi discorsi sull'utilizzo di Slick. Raccomando di mettersi in contatto con lui per chiedere informazioni sull'uso di HLists. –

+0

HList compila molto lentamente se ho 23 campi – jilen