java - Hibernate : org. hibernate.PropertyAccessException:IllegalArgumentException

标签 java hibernate jpa

我有一个父表(MHS_USER)和关联的子表(GROUP),与ManyToMany关系映射如下(相关代码如下)

@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 错误的线程(我正在使用 Hibernate 3.3.1)。有没有人遇到过同样的问题,如果有,最后是如何解决的? 任何意见都将受到高度赞赏。

最佳答案

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

关于java - Hibernate : org. hibernate.PropertyAccessException:IllegalArgumentException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4728402/

相关文章:

java - 重新加载持久化实体

java - Spring 批处理 : How to find out if job is restarted

java - Hashmap返回空值问题

hibernate - EasyMock 和 Hibernate 标准查询

hibernate - Grails读取GORM映射

java - JPA[Hibernate] 延迟加载与 GWT 问题

java - JPA多持久化持久单元和JTA事务

java - Android应用内计费如何实现

java - 有没有办法在关闭时使用 ContextListener 关闭 contextDestroyed() 方法中的所有 ThreadLocals(保存 Session 对象)?

mysql - tomcat 7.0.42池化,hibernate 4.2,mysql坚如磐石的自动重新连接解决方​​案