Hibernate значение символа дискриминатора - PullRequest
2 голосов
/ 28 мая 2011

Почему hibernate считает, что дискриминаторы символов небезопасны?

Using default @DiscriminatorValue for a discriminator of type CHAR is not safe

Ответы [ 3 ]

3 голосов
/ 28 мая 2011

Возможно, потому что тип CHAR состоит в добавлении пробелов к каждому значению до тех пор, пока результирующий текст не будет иметь длину столбца.Это приводит к всевозможным неприятным ошибкам, которых нет у varchars.

2 голосов
/ 10 июня 2014

Есть ли в вашем наследственном дереве абстрактный предок?

Когда у вас есть абстрактный базовый класс, помеченный как @Entity, Hibernate считает, что абстрактный класс должен иметь значение дискриминатора, даже если для этого типа никогда не будет строки базы данных. Существует ошибка Hibernate для этой проблемы.

Одним из способов может быть использование @MappedSuperclass.Недостаток: вы не сможете выполнять запросы на основе абстрактного типа, так как он больше не будет @ Entity.

Возможно, вы захотите пересмотреть, действительно ли наследование подходит для вашегомодель объекта.См. этот вопрос .

1 голос
/ 14 июня 2016

Я думаю, это потому, что значение дискриминатора по умолчанию для CHAR - это просто пробелы, что, вероятно, может привести к различным недоразумениям.

Я столкнулся с этим сообщением об ошибке, когда у меня был конкретный базовый класс, которыйне был помечен @DiscriminatorValue.Ошибка была устранена, когда я добавил аннотацию.

Убедитесь, что у каждого конкретного класса в иерархии сопоставленных типов есть @DiscriminatorValue, включая базовый класс, и эта ошибка может исчезнуть.

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