隨筆-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 我愛佳娃 閱讀(4028) 評論(1)  編輯  收藏 所屬分類: DB相關 、Hibernate

          評論:
          # re: ManyToMany關系中,使用非主鍵聯合的方法 2013-08-25 11:14 | miketho
          怎么沒有映射表呢,我不太會看注解的方式呀!  回復  更多評論
            
          主站蜘蛛池模板: 宜章县| 孙吴县| 武邑县| 当涂县| 牟定县| 象州县| 梅河口市| 安泽县| 荆门市| 岫岩| 江西省| 湖口县| 临高县| 灵石县| 固阳县| 定南县| 新田县| 新乡县| 漳平市| 嫩江县| 新竹市| 甘泉县| 富源县| 安陆市| 同江市| 台北县| 叶城县| 自贡市| 济南市| 福贡县| 古田县| 巩留县| 赫章县| 通州市| 安宁市| 沙湾县| 双辽市| 太和县| 长沙县| 宜川县| 贵南县|