无法在hibernate中保留map的所有值

时间:2012-06-07 14:37:19

标签: java sql hibernate map annotations

数据库布局:

USER_PREF_VAL

  1. int user_id
  2. int value_id
  3. int pref_id
  4. USER

    1. int id
    2. varchar name
    3. PREF_VAL

      1. int id
      2. int pref_id
      3. varchar value
      4. varchar label
      5. PREF

        1. int id
        2. varchar name
        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);
          }
          
        4. 我的问题是,在使用getPreferences()

          提取信息时

          我从USER_PREF_VAL获取正确的项目映射 即:MAP / PreferenceEntity,ValueEntity \

          然而,当我进行添加时,在数据库中它将创建一行,例如:

          USER_ID,PREFERENCE_ID,NULL

          任何有关如何获得可能插入该值的帮助都将非常感激。另外我知道传递给ValueEntity的值不是null。

          谢谢

0 个答案:

没有答案