隨筆-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
          怎么沒有映射表呢,我不太會看注解的方式呀!  回復  更多評論
            
          主站蜘蛛池模板: 张家界市| 大连市| 微博| 龙泉市| 大竹县| 廊坊市| 郴州市| 南宫市| 潮州市| 黑河市| 建德市| 乐安县| 上思县| 剑川县| 察隅县| 东方市| 秦安县| 礼泉县| 汉源县| 万年县| 克什克腾旗| 南京市| 斗六市| 竹北市| 普兰县| 桐城市| 酒泉市| 宜黄县| 澄城县| 鞍山市| 南溪县| 高碑店市| 普定县| 青龙| 南昌县| 龙川县| 琼海市| 玉树县| 凉山| 左权县| 虎林市|