2011-01-18 16 views
1

Iは、親テーブル(MHS_USER)と関連した子テーブル(GROUP)は、以下のように多対多の関係でマッピング(以下関連するコード)上記休止:org.hibernate.PropertyAccessException:はIllegalArgumentException

@Entity 
@Table(name = "mhs_user") 
public class MHSUser extends implements Comparable<User> { 
     @ManyToMany(fetch = FetchType.EAGER, cascade = { CascadeType.ALL }) 
     @JoinTable(name = "user_group_rel", joinColumns = @JoinColumn(name = "mhs_user_id"), inverseJoinColumns = @JoinColumn(name = "group_id")) 
     public List<Group> getGroups() { 
       return groups; 
     } 
     public void setGroups(List<Group> groups) { 
       this.groups = groups; 
     } 

} 

を有します、 mhs_user_idはMHS_USERテーブルのID列で、grp_idはGROUPテーブルのIDキーです。 USER_GROUP_RELテーブルは、2つの間の関係を保持する結合テーブルです。新しいUserインスタンスを永続化すると、(親テーブルと子テーブルにレコードを挿入することによって)期待どおりに動作します。しかし、Userインスタンスに値を更新しようとすると、PropertyAccessExceptionがスローされます。以下は、Hibernateが更新のみでGROUPテーブルからGROUP_IDを検索するときに、「オブジェクトが宣言クラスのインスタンスではありません」というエラーがスローされますようにです混乱するかもしれない選択スタックトレース

------------------------------------------------------------------------------------------ 
[1/14/11 13:59:10:154 CST] 0000004b SystemErr  R Caused by: org.hibernate.PropertyAccessException: IllegalArgumentException occurred calling getter of edu.mayo.hcdm.mhsr.businessobject.Group.id 
     at org.hibernate.property.BasicPropertyAccessor$BasicGetter.get(BasicPropertyAccessor.java:171) 
     at org.hibernate.tuple.entity.AbstractEntityTuplizer.getIdentifier(AbstractEntityTuplizer.java:183) 
……………………………………………………………………………………………………………………………………………….. 
……………………………………………………………………………………………………………………………………………….. 
……………………………………………………………………………………………………………………………………………….. 
……………………………………………………………………………………………………………………………………………….. [1/14/11 13:59:10:154 CST] 0000004b SystemErr  R ... 90 more 
[1/14/11 13:59:10:154 CST] 0000004b SystemErr  R Caused by: java.lang.IllegalArgumentException: object is not an instance of declaring class 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:79) 
------------------------------------------------------------------------------------------ 

です。ハイバネートバグ(Hibernate 3.3.1を使用しています)について多くのスレッドをオンラインで見つけました。誰もが同じ問題に遭遇しましたか?もしそうなら、あなたはどのように解決しましたか? 入力が高く評価されています。

+0

は 'Group'エンティティを示します。 – Bozho

答えて

0

groupsリストにGroup以外のオブジェクトが含まれていないことを確認してください - それは最も明白な原因のようです。