1

数据库布局:

USER_PREF_VAL

  1. int 用户 ID
  2. int value_id
  3. int pref_id

用户

  1. 内部编号
  2. varchar 名称

PREF_VAL

  1. 内部编号
  2. int pref_id
  3. varchar 值
  4. varchar 标签

PREF

  1. 内部编号
  2. varchar 名称
  3. 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 传递给的值不为空。

谢谢

4

0 回答 0