Hibernate:org.hibernate.PropertyAccessException:IllegalArgumentException

时间:2011-01-18 19:56:08

标签: java hibernate jpa

我有一个父表(MHS_USER)和与ManyToMany关系映射的关联子表(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)
------------------------------------------------------------------------------------------

由于Hibernate仅在更新时从GROUP表中搜索group_id时出现“对象不是声明类的实例”的错误,因此会让人感到困惑。我在网上发现了很多关于它是一个hibernate错误的线程(我正在使用Hibernate 3.3.1)。有没有人遇到过同样的问题,如果有的话,你是怎么解决的? 任何意见都非常感谢。

1 个答案:

答案 0 :(得分:0)

确保groups列表不包含Group以外的对象 - 这似乎是最明显的原因。