2017-02-22 99 views
0

我有兩個實體在我的春天,引導應用程序:許多一對多的關係在春季啓動兩個實體之間

User.java

@Entity 
public class User { 
     @Id 
     @GeneratedValue(strategy = GenerationType.AUTO) 
     Long id; 
     String firstname; 
     String lastname; 
     String username; 
     String password; 
} 

角色.java

Entity 
@Table(name = "role") 
public class Role { 
     @Id 
     @GeneratedValue(strategy = GenerationType.AUTO) 
     Long id; 
     String name; 
     String description; 
} 

爲我的MySql數據庫

我已經排除了這個問題的getter和setter方法。

我想實現一個兩個實體之間的多對多關係。每個用戶都應該能夠爲自己分配多個角色

我已經在我的數據庫中創建了兩個表的映射表。它具有行

  • USER_ID
  • ROLE_ID。

我還創建了一個新的實體UserRole.java,看起來像這樣:

@Entity 
@Table(name = "user_role") 
public class UserRole implements Serializable{ 

    private User user; 
    private Role role; 

    @Id 
    @ManyToOne 
    @JoinColumn(name = "user_id") 
    public User getuser() { 
     return user; 
    } 

    public void setUser(User user) { 
     this.user = user; 
    } 

    @Id 
    @ManyToOne 
    @JoinColumn(name = "role_id") 
    public Role getrole(){ 
     return role; 
    } 
    public void setRole(Role role){ 
     this.role = role; 
    } 

} 

現在我的問題:這是建築是否正確?如果是的話,我如何將現有用戶添加到現有用戶並在春季啓動時獲取此用戶的角色?

回答

0

你可以找到有關的任何教程多到許多使用Hibernate /春季數據,例如關係: Spring Data many-to-many

與您的模型很簡單,添加關係的映射,像這樣:

@Entity 
public class Role { 
    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    private Long id; 
    private String name; 
    private String description; 

    @ManyToMany(cascade = CascadeType.ALL) 
    @JoinTable 
    private Set<User> users; 
} 

這:

@Entity 
public class User { 
    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    private Long id; 
    private String firstname; 
    private String lastname; 
    private String username; 
    private String password; 

    @ManyToMany(mappedBy = "users") 
    private Set<Role> roles; 
} 
+0

是的,我看到這個教程,但他也有與第三種模式相同的教程,這些實體映射到GETHER。是否有必要有一個** UserRole.java **類?我在我的SQL數據庫中有一個相應的user_role表 –

+0

是的,它沒有必要有一個UserRole.java',從我的例子中'@ JoinTable'將會自動創建帶有連接的表而不需要你的任何額外的類 –

+0

我做了它你說,它的工作,但我不知道如何寫入MySQL的映射表。如果你不介意幫助,那麼請看看我的新問題[這裏](http://stackoverflow.com/questions/42417025/save-many-to-many-relationship-in-corresponding-mapping-表) –

相關問題