Мне интересно, можно ли использовать аннотации для сохранения attributes
карты в следующем классе с использованием JPA2
public class Example {
long id;
// ....
Map<String, String> attributes = new HashMap<String, String>();
// ....
}
Поскольку у нас уже есть готовая производственная база данных, в идеале значения attributes
могут отображаться в следующей существующей таблице:
create table example_attributes {
example_id bigint,
name varchar(100),
value varchar(100));
Map<String, SomeOtherClass>
example_attributes
должен быть составной ключ(example_id, name)
- который hbm2ddl сгенерирует из приведенного выше.Specified key was too long; max key length is 767 bytes
этим. Первичный ключ, который он пытается создать, представляет собой комбинацию varchar (255) и @JoinColumn, что превышает размер столбца по умолчанию. Вам нужно либо изменить свою базу данных, либо изменить свой @MapKeyColumn, чтобы указать длину:@MapKeyColumn(name="name", length=100)
Это пример того, как настроить карту с контролем над именами столбцов и таблиц, а также длиной поля.
источник