JPA @Inheritance (стратегии = InheritanceType.JOINED): различное значение дискриминатора для того же класса - PullRequest
0 голосов
/ 10 октября 2011

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

Примерно так:

@DiscriminatorValue("4")
@DiscriminatorValue("5")
public class CartaImpl extends RapportoImpl implements Carta, Cloneable {

Другой вопрос: возможно ли иметь реализацию по умолчанию, если для значения поля индикатора не предусмотрен класс, чтобы не вызывать это исключение?

Missing class for indicator field value 

Ответы [ 3 ]

1 голос
/ 10 октября 2011

Не имеет смысла.Если экземпляры этого класса имеют два возможных значения дискриминатора в БД, то создайте два разных класса в одном и том же дереве наследования, по одному на значение дискриминатора

0 голосов
/ 11 октября 2011

Это не определено в JPA, но некоторые провайдеры поддерживают более сложные индикаторы.

Если вы используете EclipseLink, вы можете использовать ClassExtractor, чтобы определить собственный код для определения класса, используемого для каждой строки.

См. http://en.wikibooks.org/wiki/Java_Persistence/Inheritance#No_class_discriminator_column

0 голосов
/ 10 октября 2011

Зачем использовать два разных значения, чтобы обозначать одно и то же? И зачем использовать значения, которые ничего не значат? Я бы исправил данные, а не пытался отобразить неверные данные:

update rapporto set discriminator = '4' where discriminator = '5';
update rapporto set discriminator = '0' where discriminator not in ('0,', '1', '2', '3', '4');

(при условии, что 0 - дискриминатор объекта по умолчанию, а 0, 1, 2, 3, 4 - допустимые значения дискриминатора).

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