2011-12-07 3 views
0

테이블JPA @OneToMany 가져 오는 빈

APP_USER 
    ROLE_GROUP_ID 
    APP_USER_ID (PK) 
    USERNAME 
    ROLE_GROUP_ID  

ROLE_GROUP 
    ROLE_GROUP_ID  
    ROLE_ID 
....  

ROLE_STATE (this table has composite PK) 
ROLE_ID (PK) 
STATE_ID (PK) 
.... 

나는 OnetoOne ROLE_GROUPAPP_USER에 대한 결과를 검색 할 수,하지만 ROLE_GROUP oneToMany ROLE_STATE가 비어 있습니다. 나는 org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean을 사용하여 객체를 매핑합니다.

@Entity 
    @Table(name = "APP_USER") 
    public class AppUser implements Serializable{ 

     private static final long serialVersionUID = 1L; 

     @Column(name = "ROLE_GROUP_ID") 
     private Integer roleGroupIdAppuser; 

     @Id 
     @Column(name="APP_USER_ID") 
     Integer appUserID; 

     @Column(name = "USERNAME") 
     private String userName; 

     @OneToOne(fetch=FetchType.EAGER) 
     @JoinColumn(name="ROLE_GROUP_ID",insertable=false,updatable=false) 
     private RoleGroup roleGroup;  


    @Entity 
    @Table(name = "ROLE_GROUP") 
    public class RoleGroup implements Serializable{ 

     @Id 
     @Column(name="ROLE_GROUP_ID") 
     private Integer roleGroupId; 

     @Column(name="ROLE_ID") 
     private Integer roleID; 

     @Column(name="APP_GROUP_ID") 
     private Integer appGroupId; 

     @OneToMany(fetch=FetchType.EAGER) 
     @JoinColumn(name="ROLE_ID") 
     Set<RoleState> roleState; 

     public Integer getRoleGroupId() { 
      return roleGroupId; 
     }  

    @Entity 
    @Table(name = "ROLE_STATE") 
    public class RoleState implements Serializable { 

     private static final long serialVersionUID = 1L; 

     /*@Embeddable 
     public static class Pk implements Serializable { 

      @Column(name = "ROLE_ID", nullable = false, updatable = false) 
      private Integer roleId; 

      @Column(name = "STATE_ID", nullable = false, updatable = false) 
      private Integer stateId; 

      @Column(name = "TARGET_STATE_ID", nullable = false, updatable = false) 
      private int targetStateID; 
     } 

     @EmbeddedId 
     private Pk pk;*/ 

     @Id 
     @Column(name = "ROLE_ID") 
     private Integer roleId; 

     @Id 
     @Basic(optional = true) 
     @Column(name = "STATE_ID") 
     private Integer stateId; 

     @Id 
     @Basic(optional = true) 
     @Column(name = "TARGET_STATE_ID") 
     private Integer targetStateID; 

     @OneToOne(fetch = FetchType.LAZY) 
     @JoinColumn(name = "STATE_ID",insertable=false,updatable=false) 
     State state; 

    AppUser appUser=(AppUser)currentSession().createQuery("from AppUser where  userName=:userNamel").setParameter("userNamel", userNamel.toUpperCase()).list().get(0); 

      System.out.println(appUser.getRoleGroup().getRoleID()); 
      Set<RoleState> roleState=appUser.getRoleGroup().getRoleState(); 
      for(RoleState role:roleState){ 
       System.out.println(role.getState().getName()); 
      } 

      System.out.println(appUser.getUserName()); 

roleState 분명 내가 뭔가를 그리워 비어


는, 어떤 도움을 주시면 감사하겠습니다. 난, 당신은 역 쪽은 "mappedBy"를 누락 생각

답변

0

... 다음 시도 :

@OneToMany(mappedBy="roleId", fetch=FetchType.EAGER) 
@JoinColumn(name="ROLE_ID") 
Set<RoleState> roleState; 
관련 문제