2011-01-04 2 views
1

나는 2 개의 엔티티가있다 : 사용자와 역할 나는 사용자와 역할 사이에 합성 키를 포함 할 하나의 클래스 인 Userrole을 가지고있다.최대 절전 모드 주석에 관한 질문

지금 Userrole은 ID 및 역할 ID ..하지만 개체의 사용자 및 역할 포함되지 않습니다 그것은 다음과 같습니다

public class UserRole implements Serializable{ 
    User user; 
    Role role; 

내가 사용자에 @Id를 넣을 수 있습니다? like :

@Id 
    public User getUser() { 
     return user; 
    } 
    public void setUser(User user) { 
     this.user = user; 
    } 

?

답변

2

주석을 사용하면 복합 ID에 적합한 클래스를 정의해야합니다. @Embeddable으로 주석을 추가하십시오. (XML을 사용하면 명시 적 id 클래스 없이도 composite id를 매핑 할 수 있습니다.) 여기에 composite id로 an example using an inner class이 있고 another one, with a top-level id class이 있습니다.

0

no. @Id는 프리미티브에서만 사용할 수 있습니다. 하지만 당신은 @ComposeId 나 @IdClass를 사용할 수 있습니다. (지금처럼 절전 모드의 doc에 접근 할 수 없습니다.) 그리고 사용자를 작성한 id로 매핑하십시오.

0

방법 나는 할 것이다 :

@Entity 
    public class User { 
    ... 
    @OneToMany 
    public Set<UserRoles> getUserRoles() { 
      return this.userRoles; 
     } 
    } 

    @Entity 
    public class UserRole { 
    ... 

    @Id 
    @GeneratedValue 
    public long getId() { 
        return this.id; 
    } 

    @ManyToOne 
    public Role getRole() { 
      return this.role; 
     } 


    @ManyToOne 
    public Role getCategory() { 
      return this.category; 
     } 

    }