2011-12-16 2 views
3

У меня есть объект, который содержит следующий элемент атрибутов:Использования JPA Аннотации и Map <String, String> с длиной VarChar

@Id 
protected String id; 

@ElementCollection(targetClass = String.class) 
@MapKeyClass(String.class)  
protected Map<String, String> data = new HashMap<String,String>(); 

Это карты для двух таблиц, таблиц ОБЪЕКТА, а ENTITY_DATA таблица, содержащая строку для каждого элемента в HashMap. Он отображает значения в HashMap как VARCHAR (256), и мне нужно, чтобы он был VARCHAR (1024). Это можно сделать? Я не могу найти ничего в аннотациях ElementCollection или MapKeyClass, которые позволят это сделать.

+0

Как примечание стороны - вы ** не нужно ** указать «targetClass» или «@ MapKeyClass», если вы используете дженерики. Эти типы можно вывести из типов Java. –

ответ

6

Потому что, как вы говорите, проблема со значениями, она идет как с столбцами в целом. Просто добавьте следующую аннотацию в поле.

@Column(columnDefinition = "varchar(1024)") 

С JPA 2.0 вы можете сделать то же самое и на местах, где ключ карты будет сохранялось с MapKeyColumn аннотацию:

@MapKeyColumn(columnDefinition = "varchar(1024)") 
+0

Я бы поднял вас на 10x, если мог. Спасибо, это сработало отлично. –

Смежные вопросы