这是我的模型的一部分:
@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
任何想法表示赞赏!