Talvez o leitor já tenha se deparado com o problema de especificar o nome completo da tabela, formato schema.tabela, nas definições de Table’s do Slick.
Muitos tentam a seguinte solução, e encontram problemas:
object Pessoas extends Table[(Int,String)]("cadastro.pessoas") { // etc...
Solução: usar a versão de dois parâmetros de Table[T].apply, assim:
object Pessoas extends Table[(Int,String)](Some("cadastro"), "pessoas") {
Passar o nome completo como nome da tabela não funcionará. Irá gerar uma Exceção em tempo de execução afirmando não encontrar a tabela “cadastro.cadastro.pessoas”. Note o nome de catálogo/schema repetido.
O que aconteceu?
A origem do problema está em versões legadas do Slick, onde o código montava o nome de tabelas de acordo com os parâmetros de conexão + o nome especificado no Object que estende Table.
Para não quebrar o código legado, o desenvolvedor szeiger decidiu sobrecarregar o método apply de Table com um outro construtor, que recebe uma Option[String] como primeiro parâmetro. Quando criamos a tabela com um parâmetro, essa option recebe None. Quando passamos um primeiro parâmetro contendo o nome do schema/catálogo, o Slick passa adiante essa String e realiza as consultas com sucesso.
Resultando em:
object Pessoas extends Table[(Int,String)](Some("cadastro"), "pessoas") {
Que funciona perfeitamente. A mesma técnica funciona para Posgresql