データベースのレイアウト:
USER_PREF_VAL
- int user_id
- int value_id
- int pref_id
ユーザー
- 整数 ID
- varchar 名
PREF_VAL
- 整数 ID
- int pref_id
- varchar 値
- varchar ラベル
優先
- 整数 ID
- varchar 名
varchar ラベル
@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL) @JoinTable( name="CMS_USER_PREFERENCE_VALUE", joinColumns = @JoinColumn( name="user_id" ), inverseJoinColumns = @JoinColumn( name="value_id") ) @Cascade({org.hibernate.annotations.CascadeType.DELETE_ORPHAN}) @MapKey(name = "preference") public Map<PreferenceEntity, PreferenceValueEntity> getPreferences(){ return map; } protected void setPreferences(Map<PreferenceEntity, PreferenceValueEntity> mp){ map = mp; } public void addPreference(PreferenceEntity pe,PreferenceValueEntity pve){ map.put(pe,pve); }
私の問題は、 getPreferences() を使用して情報を引き出すときです
USER_PREF_VAL からアイテムの正しいマッピングを取得します。つまり、MAP /PreferenceEntity、ValueEntity\
ただし、追加を行うと、データベースに次のような行が作成されます。
ユーザー ID、優先 ID、NULL
その値をおそらく挿入する方法を理解する上での助けをいただければ幸いです。また、ValueEntity として渡される値が null でないこともわかっています。
ありがとうございました