Scala, Play framework, Slick: consulta de junção de banco de dados com filtro no campo de enumeração

Sameer Mirji

Eu tenho uma consulta Slick com join com um filtro em um campo de enumeração, para a qual recebo o erro de compilação abaixo:

[error] /Users/someuser/SomeApp/app/com/somePackage/SomeDAO.scala:190:84: value === is not a member of slick.lifted.Rep[com.somePackage.models.MyCustomEnum.MyCustomEnum]
[error]           myCustomEnumTbl.userId === userTbl.id && myCustomEnumTbl.selectionType === MyCustomEnum.FOOD
[error]                                                                                  ^

Fragmento de código:

var userQuery = for {
  (user, selection) <- Users.filter(_.id === userId).join(selectionTableDAO.getTable).on {
  (myCustomEnumTbl,userTbl) => myCustomEnumTbl.userId === userTbl.id && myCustomEnumTbl.selectionType === MyCustomEnum.FOOD
} yield (user, selection)
val userRes = db.run(userQuery.result)

Qual seria a maneira certa de filtrar em um campo enum?

Sameer Mirji

Consegui resolver esse problema definindo um mapeamento implícito para o campo de enumeração:

implicit val CustomSelectionTypeEnumsTypesMapper = MappedColumnType.base[MyCustomEnum, String](
  e => e.toString,
  s => MyCustomEnum.withName(s)
)

Este artigo é coletado da Internet.

Se houver alguma infração, entre em [email protected] Delete.

editar em
0

deixe-me dizer algumas palavras

0comentários
loginDepois de participar da revisão

Artigos relacionados

TOP lista

quentelabel

Arquivo