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?
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.
deixe-me dizer algumas palavras