Это часть моей модели:
@Entity
public class Entry
{
@Id @GeneratedValue
private long identifier;
@ElementCollection
@Column(nullable = false)
private Map<String, String> titles;
@ElementCollection
@Column(nullable = false)
@Lob
private Map<String, String> contents;
// Getters and setters, other fields and methods
}
Я использую аннотацию @Lob, потому что значение «содержимого» карты может быть большим. Обратите внимание, что мне все равно, как ключ «содержимого» карты отображается в базе данных. Я просто не смог найти способ указать, что аннотация @Lob должна применяться только к значению карты.
Хотя Entry.titles сопоставляется с базой данных без проблем, Entry.contents - нет. Таблица базы данных не создается, и MySQL / Hibernate жалуется, что:
Unsuccessful: create table myblog.Entry_contents (Entry_identifier bigint not null, contents longtext not null, contents_KEY longtext, primary key (Entry_identifier, contents_KEY)) type=InnoDB
BLOB/TEXT column 'contents_KEY' used in key specification without a key length
Любые идеи приветствуются!