На данный момент нет готовой версии Slick для Scala 2.11.0. Только веха Slick версии 2.1.0-M1 компилируется на новом Scala.
Для класса Slick Table требуются методы tupled и unapply для компиляции. Эти методы не существуют в классах с арностью > 22.
Таким образом, по состоянию на 22 апреля 2014 года нам все еще нужно использовать HList для преодоления ограничений арности.
Спасибо @Régis Jean-Gilles, который помог мне не запутаться.
personVlad Millerschedule22.04.2014
comment
Часть о apply и unapply неверна. Классы case с арностью › 22 do имеют метод apply, но, учитывая, что функции по-прежнему ограничены максимальным числом 22, вы не можете поднять apply в функцию (без эта-расширения возможно). Пока вы напрямую вызываете apply (как в MyClass(1,2,3,...), вы хороши. И хотя нет метода unapply, сопоставление с образцом все еще работает: сопоставитель с образцом сам знает, как сопоставить класс case с образцом, ему не нужно вызывать unapply метод.
- personRégis Jean-Gilles; 22.04.2014
comment
да, вы совершенно правы применить. Спасибо @RégisJean-Gilles
- personVlad Miller; 22.04.2014
comment
Без проблем. Я вижу, вы отредактировали свой ответ. Но разве тот факт, что вы можете вызвать apply и выполнить сопоставление с образцом, не сделает предложение Также применить метод, ограничивающий функции 22 параметрами, совершенно неуместным? Или Slick нужно больше (например, нужно ли ему выполнять эта-расширение на apply)?
- personRégis Jean-Gilles; 22.04.2014
comment
Да, ты прав. Я запутался сам. Для работы Slick требуются методы tupled && unapply. Этих методов нет в классах case с арностью › 22
- personVlad Miller; 22.04.2014
comment
Спасибо, что прояснили это. Есть перспективы на будущее? Это основная проблема, удерживающая меня от переноса приложения с JPA на Slick. Можем ли мы ожидать, что эта проблема будет должным образом решена в (не столь отдаленном) будущем?
- personkliron; 13.10.2014
comment
Вы по-прежнему можете портировать свои приложения на Slick. Если в ваших таблицах более 22 столбцов, используйте HList
- personVlad Miller; 14.10.2014