数据库布局:
USER_PREF_VAL
- int 用户 ID
- int value_id
- int pref_id
用户
- 内部编号
- varchar 名称
PREF_VAL
- 内部编号
- int pref_id
- varchar 值
- varchar 标签
PREF
- 内部编号
- 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\
但是,当我进行添加时,它会在数据库中创建一行,例如:
USER_ID、PREFERENCE_ID、NULL
任何有关弄清楚如何获得可能插入的值的帮助将不胜感激。我也知道作为 ValueEntity 传递给的值不为空。
谢谢