Преобразование значения переменной с использованием AtrributeConverter на основе значения перечисления - PullRequest
0 голосов
/ 08 декабря 2018

Я недавно узнал об AttributeConverter .У меня есть значения различных типов данных, которые должны быть переданы как объект в функцию convertToDatabaseColumn и должны вернуть строку.Однако при преобразовании его обратно в объект в convertToEntityAttribute (String dbData) мне необходимо преобразовать значение в разные типы данных в соответствии с переменной enum в сущности и, наконец, вернуть его как объект.Для дальнейшей обработки будет проверка, является ли значение объекта экземпляром определенного типа данных.Я не могу найти способ передать любое другое значение в преобразователь, кроме значения, которое необходимо преобразовать.Есть ли способ, как я могу это реализовать ??

public class entityClass{
  EnumType enumValue;

  @Lob
  @Converter(myconverter.class)
  Object valueToConvert;

 //constructor, getters and setters
 }

`При преобразовании его обратно из базы данных, он выполняет преобразование в различные типы данных на основе значения enumType.Могу ли я как-то передать это enumValue в мой класс конвертера для сравнения?

Ответы [ 2 ]

0 голосов
/ 15 декабря 2018

В классе конвертера вы можете иметь все перечисляемые классы со своими значениями.Так что вы можете проверить и преобразовать в правильный тип данных

for (EnumType enum : EnumType.values()) {
    // do what you want
}
0 голосов
/ 15 декабря 2018

Моя идея решить эту проблему может быть - оберните ваши enumValue и valueToConvert в класс-оболочку.Затем напишите конвертер для этого класса-оболочки.Преобразователь может преобразовать класс-оболочку в строку с разделителями, json или что угодно.При чтении из базы данных проанализируйте эту строку и создайте объект-оболочку.Однако я согласен с комментарием Даниу, что это не очень хороший дизайн.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...