Value("User")
в вашем Enumeration
имеет тип Val
.И я считаю, что реализация equals
не сравнивает строковое имя значения.Я думаю, что один сложный способ сделать это - создать свои собственные Enumeration
и Val
, чтобы он возвращал true, если имя совпадает.
Но в моем коде используется, а не с JPA, я всегда конвертируюстрока в MyEnumeration.Value
.Это легко сделать с такими вещами, как:
object E extends Enumeration { val User = Value("User") }
scala> val a = E.withName("User")
a: E.Value = User
Обратите внимание, что при использовании withName
, если строка не соответствует ни одному имени в перечислении, вы получаете исключение.
Затем всегда используйтеполя перечисления в ваших сравнениях:
scala> a == E.User
res9: Boolean = true
Если JPA возвращает только строку, и нет пути к ней.Тогда я думаю, что лучший вариант - либо преобразовать значение в строку и сопоставить строку со строкой, либо обновить строку до значения Val и сравнить Val.Смешивание этих типов не сработает для сравнения, если вы не реализуете какое-то расширение для метода equals
, и это сложно.