2011-01-18 3 views
1

나는, (아래 관련 코드) 위에서최대 절전 모드 : 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; 
     } 

} 

을 ManyToMany 관계를 다음과 같이 매핑 상위 테이블 (MHS_USER) 및 관련 자식 테이블 (GROUP)가 mhs_user_id는 MHS_USER 테이블의 ID 열이고 grp_id는 GROUP 테이블의 ID 키입니다. USER_GROUP_REL 테이블은 두 테이블 간의 관계를 보유하는 조인 테이블입니다. 새 사용자 인스턴스를 유지하면 예상대로 작동합니다 (상위 테이블과 하위 테이블에 레코드를 삽입하여). 그러나 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를 검색 할 때 "개체 클래스를 선언의 인스턴스가 아닌"라는 오류가 발생합니다대로의 혼란을 얻을. 하이버 네이트 버그 (하이버 네이트 3.3.1 사용)에 대해 많은 스레드가 온라인에서 발견되었습니다. 누구도 같은 문제가 발생 했습니까? 그렇다면 어떻게 해결 했습니까? 모든 입력 사항을 높이 평가합니다.

+0

은 '그룹'항목을 보여줍니다. – Bozho

답변

0

groups 목록에 Group 이외의 개체가 포함되어 있지 않은지 확인하십시오. 가장 명백한 원인 인 것 같습니다.