我正在開發一個應用程序,用戶可以有一個或多個角色,爲此我決定創建一個映射(中間)表,因此我以User
,Role
和UserRole
這樣的:春天如何管理映射表(多對多)
在此應用程序用戶有角色(一個或多個)決定wheneaver他可以訪問特定觀點或行動的前端。我唯一需要的是檢索用戶的角色並添加/刪除它們。 JPA工具製作的,他下面我EJB(簡體):我使用的是EJB創建POJO針對前端
用戶
/**
* The persistent class for the usuario database table.
*
*/
@Entity
@NamedQuery(name="Usuario.findAll", query="SELECT u FROM Usuario u")
public class Usuario implements Serializable {
private static final long serialVersionUID = 1L;
private int idUsuario;
private List<RolUsuario> rolUsuarios;
public Usuario() {
}
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
public int getIdUsuario() {
return this.idUsuario;
}
public void setIdUsuario(int idUsuario) {
this.idUsuario = idUsuario;
}
//bi-directional many-to-one association to RolUsuario
@OneToMany(mappedBy="usuario")
public List<RolUsuario> getRolUsuarios() {
return this.rolUsuarios;
}
public void setRolUsuarios(List<RolUsuario> rolUsuarios) {
this.rolUsuarios = rolUsuarios;
}
public RolUsuario addRolUsuario(RolUsuario rolUsuario) {
getRolUsuarios().add(rolUsuario);
rolUsuario.setUsuario(this);
return rolUsuario;
}
public RolUsuario removeRolUsuario(RolUsuario rolUsuario) {
getRolUsuarios().remove(rolUsuario);
rolUsuario.setUsuario(null);
return rolUsuario;
}
}
USER_ROLE
/**
* The persistent class for the rol_usuario database table.
*
*/
@Entity
@Table(name="rol_usuario")
@NamedQuery(name="RolUsuario.findAll", query="SELECT r FROM RolUsuario r")
public class RolUsuario implements Serializable {
private static final long serialVersionUID = 1L;
private int idRol_Usuario;
private Usuario usuario;
private Rol rol;
public RolUsuario() {
}
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
public int getIdRol_Usuario() {
return this.idRol_Usuario;
}
public void setIdRol_Usuario(int idRol_Usuario) {
this.idRol_Usuario = idRol_Usuario;
}
//bi-directional many-to-one association to Usuario
@ManyToOne(fetch=FetchType.LAZY)
public Usuario getUsuario() {
return this.usuario;
}
public void setUsuario(Usuario usuario) {
this.usuario = usuario;
}
//bi-directional many-to-one association to Rol
@ManyToOne(fetch=FetchType.LAZY)
public Rol getRol() {
return this.rol;
}
public void setRol(Rol rol) {
this.rol = rol;
}
}
在我的項目。當我詢問一個給定的用戶角色的完整列表,我應該如何去這樣做:
- 創建使用CrudRepository有梅託德一個UserRole的倉庫就像
List<RolUsuario> findByUsuario(Usuario user);
返回的
UserRole
列表我User Service
並且通過 列表將每個角色提取到一個UserPOJO
發送到前端。
或者是有什麼辦法只得到了蝙蝠的權利的Roles
名單表UserRole
其中User
(同上)=什麼?
這對我來說很難描述。我的應用程序只關心用戶的角色,而不是映射表實體,所以botton行是我必須得到它們,但我不知道從哪裏開始。
任何指針都會非常有用。
編輯:
我也可以......
- 新角色除了用戶創建的UserRole。
- 將UserRole添加到用戶列表中。
- 要獲取用戶的角色,請改爲使用UserRolelist。
一種選擇是沒有UserRole的模式,但僅具有用戶和角色。您可以指定用戶具有角色列表,並在角色表中具有用戶列表。 –
以下是一個示例:http://www.mkyong.com/hibernate/hibernate-many-to-many-relationship-example-annotation/ –
問題是中間表可能有一天會成爲一個實體。 –