JPA Map <String, String> сопоставление с XML - PullRequest
1 голос
/ 08 августа 2011

Я пытаюсь определить xml mapping для поля Map<String,String>.

Класс сущности не может быть изменен, поэтому я использую вариант XML сопоставления JPA, но не могу определить правильный синтаксис.

Может кто-нибудь объяснить, как написать JPA xml для этого случая - или явно заявить, что это невозможно с xml, но возможно с аннотациями, как указано в Хранение картыиспользуя JPA ...

Я буду признателен даже за то, что это невозможно - в идеале, когда речь идет о части спецификации, в которой это указано.

Ответы [ 3 ]

1 голос
/ 09 августа 2011

Эти примитивные отношения были добавлены в JPA2, поэтому вы должны использовать реализацию JPA2.Я использую Eclipselink.Ключевое слово "ElementCollection".Кажется, это уже обсуждалось здесь: Хранение картыиспользуя JPA

1 голос
/ 11 ноября 2011

После дополнительного времени и поиска разных вещей, я случайно нашел ответ здесь: http://wiki.eclipse.org/EclipseLink/Development/JPA_2.0/new_collection_mappings#XML_2

Решение:

<element-collection name="quotes">
  <column name="QUOTE"/>
  <map-key-column name="Q_DATE"/>
  <collection-table name="EBC_QUOTES">
    <join-column name="EBC_ID"/>
  </collection-table>
</element-collection>
0 голосов
/ 08 августа 2011

Вы не указали, какую реализацию JPA вы используете, но я думаю, что это должно работать как для OpenJPA, так и для Hibernate ... См. Здесь:

http://en.wikibooks.org/wiki/Java_Persistence/Relationships#Example_of_a_map_key_column_relationship_XML

Сложность, с которой вы столкнетесь, заключается в том, что вы отображаете примитивный тип вместо типа сущности. Я не скажу, что это невозможно, но по опыту скажу, что это больно.

...