のマッピング:これは私のモデルの一部である@Lob大切地図
@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アノテーションを使用。 map "contents"のキーがどのようにデータベースにマップされているかは気にしないことに注意してください。 @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
アイデアありがとうございます!
バグ:http://opensource.atlassian.com/projects/hibernate/ブラウズ/ JPA-11 –