簡體   English   中英

休眠:org.hibernate.PropertyAccessException:IllegalArgumentException

[英]Hibernate : org.hibernate.PropertyAccessException: IllegalArgumentException

我有一個與ManyToMany關系映射的父表(MHS_USER)和關聯的子表(GROUP),如下所示(下面的相關代碼)

@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表中的標識列,而grp_id是GROUP表中的標識鍵。 USER_GROUP_REL表是保存兩者之間關系的聯接表。 當我保留一個新的User實例時,它可以按預期工作(通過在父表和子表中插入一條記錄)。 但是,當我嘗試將任何值更新為User實例時,都會引發PropertyAccessException。 以下是選擇性堆棧跟蹤

------------------------------------------------------------------------------------------
[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)
------------------------------------------------------------------------------------------

當僅在更新時從GROUP表中搜索group_id時,Hibernate會拋出一個錯誤,即“對象不是聲明類的實例”,這令人感到困惑。 我在線上找到了很多線程,它們是一個休眠錯誤(我使用的是Hibernate 3.3.1)。 有人遇到過同樣的問題嗎?如果是,您最終是如何解決它的? 高度贊賞任何輸入。

確保groups列表中不包含Group以外的對象-這似乎是最明顯的原因。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM