隨筆-124  評論-194  文章-0  trackbacks-0
          當ManyToMany或者ManyToOne定義時,JoinTable中referencedColumnName指向的是非主鍵(non PK columns),將 報ClassCastException。這里有個簡單解決辦法。

          如下面這個定義,一個HOSTGROUP可以包含多個HOST,而一個HOST也可以屬于多個HOSTGROUP,hostgroup_id是HOSTGROUP表的主鍵,但是host_object_id不是HOST表的主鍵,卻也可以唯一標識HOST,這個時候就會出現上述異常。

          @Entity
          @Table(name 
          = "hostgroups")
          public class CurHostGroup {

              @ManyToMany(fetch 
          = FetchType.LAZY)
              @JoinTable(name 
          = "hostgroup_members", joinColumns = @JoinColumn(name = "hostgroup_id", referencedColumnName = "hostgroup_id"), inverseJoinColumns = @JoinColumn(name = "host_object_id", referencedColumnName = "host_object_id"))
              
          private Set<CurHost> hosts = new HashSet<CurHost>(0);
          };

          有個非常簡單的解決辦法,讓HOST表關聯的類CurHost implements Serializable即可,要是不知道這個,能憋死人。當然這樣做,CurHost就不是POJO了。
          posted on 2008-10-27 17:30 我愛佳娃 閱讀(4024) 評論(1)  編輯  收藏 所屬分類: DB相關Hibernate

          評論:
          # re: ManyToMany關系中,使用非主鍵聯合的方法 2013-08-25 11:14 | miketho
          怎么沒有映射表呢,我不太會看注解的方式呀!  回復  更多評論
            
          主站蜘蛛池模板: 台山市| 澄城县| 太保市| 巴中市| 宁化县| 鄂托克旗| 叶城县| 永寿县| 鄂托克前旗| 台东县| 永吉县| 克什克腾旗| 苗栗市| 大埔区| 墨江| 巍山| 镇雄县| 郁南县| 浦城县| 十堰市| 鄂托克前旗| 馆陶县| 武清区| 丘北县| 古丈县| 抚顺市| 武定县| 武夷山市| 河西区| 柘荣县| 石河子市| 永安市| 大邑县| 湟源县| 莱西市| 城口县| 张掖市| 和龙市| 延津县| 灵山县| 万山特区|