Play で JPA を使用して HashMap を保存する方法について、ほぼ 1 週間苦労しています。他のすべての属性は格納されますが、HashMap だけに要素がありません (空です)。
public class ImageModel extends Model {
@Id
private String id;
private String url;
@ElementCollection(targetClass = java.lang.String.class)
@MapKeyClass(java.lang.String.class)
private Map<String,String> tags = new HashMap<>();
// the method for adding keys and values to the HashMap
public void add(String key, String value){
tags.put(key,value);
this.save();
}
}
私も注釈を付けようとしました:
@ElementCollection(fetch=FetchType.LAZY)
したがって、今のところ私の唯一の推測は、Play を適切に構成していないということです。(私は Play2 を使用しており、データベース設定の前にある "#" (コメント マーク) を削除する以外は何も構成していないと言わざるを得ません)。
On Play のドキュメントには、「 Play 2.0 には組み込みの JPA 実装はありません」と記載されています。そうなのだろうか?
更新: 私はいくつかの調査を行い、Play - H2 のデフォルト データベースを使用していることが原因である可能性があると述べました。私はMySQLで試しました-ビデオのやり方ですが、ここでもIDとURLのみが保存されます。クラスの名前を持つMySQLデータベースとテーブルを調べましたが、2つの属性(idとurl)しかなく、HashMapの痕跡はありませんでした。
Update2 : 印刷画面を追加 - データベース クエリを使用。
Update3 : Play のサンプル "computer-database-jpa" は正常に動作しているため、JPA は問題ないはずですが、そのサンプルでは Map (HashMap) が使用されていませんでした。EclipseLinkで休止状態を変更しましたが、まだ機能していません。:( (ただし、すべての基本型属性はデータベースにあります)