Я хотел бы иметь класс Java (MyClass), который содержит идентификатор, имя и значение, где значение может быть примитивным типом (строка, int, long) или списком или картой. Класс будет сохранен с использованием JPA 2.0.
Моя первая мысль была о классе со следующей структурой:
,-----------.
| MyClass |
|...........|
| id |
| name |
| index |
| key |
| value |
'------------
которые разрешаются геттером и сеттером, если сохранен примитив, список или карта - в зависимости от комбинации {индекс, ключ, значение}.
Альтернативой может быть иерархия наследования:
................. | AbstractClass | ,.- ................''--..__ _,-'' | `--.._ ,-' | ................ ...................... | |MapValueClass | | PrimitiveValueClass| | ................ ...................... | .................. | ListValueClass | ..................
Имея в виду, что я использую JPA: есть ли «стандартный способ» или «лучшая практика» для этой проблемы? Каким-то образом я могу использовать myClass и получить доступ к значению с помощью геттера и решить с помощью instanceof Map/List/Integer, какое значение сохраняется?