Я работаю над набором совместимости JPA 2.0 для моей стажировки ... Часть этого набора проверяет угловые случаи.Переопределение сопоставлений для карты базовых типов
JSR-317 состояние на странице 360, что «AttributeOverride
аннотаций могут быть применены к коллекции элементов, содержащей экземпляры встраиваемого класса или к сбору в карты, ключ и/или значение представляет собой встраиваемый класс.»
Как же, согласно JPA 2.0, переопределить отображение карты базовых типов? Я знаю, что могу использовать @MapKeyColumn для сопоставления ключа карты, и я уверен, что есть способ сопоставить сторону значения @CollectionTable, а также ...
Но как бы я пошел, переопределяя эти ?
Рассмотрим @Embeddable с картой
@CollectionTable
@MapKeyColumn(name="differentname_KEY")
Map<Integer, String> testMap;
Как бы я идти о перекрывая ключ и значение? Использовать ли @AttributeOverride или что-то еще? (Или это невозможно ?!)
Я предполагаю, что такая карта будет сопоставлена с @CollectionTable, поэтому, пожалуйста, исправьте меня, если я ошибаюсь. Если JPA не дает ответа, мне было бы интересно узнать, как провайдеры настойчивости решили эту проблему.
EDIT: Viruzzo прокомментировал, что базовые типы являются встраиваемыми типами. Я согласен с этим, но что-то удерживает меня: JSR-317 имеет в виду вложенный класс (см. Верхнюю цитату). Тип и класс не совпадают ...
Основные типы встраиваемых; Я бы сказал, что это просто плохой выбор слов. – Viruzzo
Если вы добавили, что в качестве ответа я мог бы принять его ... Вы уверены, что нет никакой разницы?Есть разница в глубине от того, что я видел: в случае встраиваемого это будет '@AttributeOverride (name =" embeddable.testMap.key.attribute "[column опущен]), и в случае базового типа он будет затем введите '@AttributeOverride (name =" embeddable.testMap.key "[column опущен])'. – Pimgd
@MapKeyClass также указывает, что «ключ карты может быть базовым типом, вложенным классом или сущностью», что приводит к дальнейшей поддержке того, что встраиваемый тип не совпадает с встраиваемым классом. – Pimgd