2011-01-04 2 views
1

У меня есть 2 объекта: пользователь и роль У меня есть один класс Userrole, который будет содержать составной ключ между пользователем и ролью.вопрос о аннотациях спящего режима

Теперь UserRole не будет содержать USERID и .. но Идентификатор роли объекта пользователя и роли, и это выглядит следующим образом:

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

может я поставил @Id на пользователя? например:

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

?

ответ

2

Используя аннотации, вам нужно определить подходящий класс для составного идентификатора, и аннотировать его как @Embeddable. (С XML можно сопоставить составной идентификатор без явного класса id.) Здесь an example using an inner class как составной идентификатор, и another one, with a top-level id class.

0

no. Вы можете использовать только @Id в примитивах. Но вы можете использовать @ComposeId или @IdClass (что-то вроде этого, теперь невозможно перейти к hibernate doc ...) и отобразить пользователя как ваш составленный идентификатор

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; 
     } 

    } 
Смежные вопросы