Sou novo na linguagem JAVA (apenas alguns meses) e fiz os cursos FJ21, 25 e 26 na Caelum… Agora estou fazendo um projeto utilizando Primefaces, JSF2, Hibernate com MySql… Fiz um modelo onde criei as classes Usuario, Grupo e GrupoUsuario. Com o Hibernate fiz a classe de Usuario com relacionamento 1 X N com GrupoUsuario e essa com N X 1 com Grupo… Fiz os respectivos DAOs e ManagedBeans com as telas que realizam os CRUDs… Agora estou querendo criar uma tela para poder relacionar e listar os grupos e seus respectivos usuarios, mas não sei bem como realizar…
Como eu consigo, por exemplo, carregar um DataTable com o Nome do Grupo, Nome do Usuario, Login e EMail do Usuario??? Como criar a lista com atributos de diferentes classes ? Como devo construir o DAO e o Bean para um tela onde eu consiga associar e desassociar grupos e usuários.???
…
grande ajuda… tks…
Bom dia acesar, tudo bem?
poderia postar suas entities para verificarmos os relacionamentos?
Oi Fábio,
seguem as entities…
@Entity
public class Grupo implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue
private Long id;
@Column(nullable=false,unique=true)
@NotEmpty
private String nome;
@Column(nullable=false)
private String descricao;
@OneToMany(mappedBy="grupo")
private List<GrupoUsuario> grupoUsuarios;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public List<GrupoUsuario> getGrupoUsuarios() {
return grupoUsuarios;
}
public void setGrupoUsuarios(List<GrupoUsuario> grupoUsuarios) {
this.grupoUsuarios = grupoUsuarios;
}
public String getDescricao() {
return descricao;
}
public void setDescricao(String descricao) {
this.descricao = descricao;
}
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@Entity
public class Usuario implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue
private Long Id;
@Column(nullable=false, length=500)
private String nome;
@Column(nullable=false, unique=true)
@MapKeyColumn(columnDefinition = "varchar(255)")
private String login;
@Column(nullable=false, length=500)
@NotNull
private String senha;
@Column(nullable=false, unique=true)
@MapKeyColumn(columnDefinition = "varchar(255)")
@NotNull
private String email;
@Enumerated(EnumType.STRING)
private StatusUsuario status;
@OneToMany(mappedBy="usuario")
private List<GrupoUsuario> usuarioGrupos;
public Long getId() {
return Id;
}
public void setId(Long id) {
Id = id;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getLogin() {
return login;
}
public void setLogin(String login) {
this.login = login;
}
public String getSenha() {
return senha;
}
public void setSenha(String senha) {
this.senha = senha;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public StatusUsuario getStatus() {
return status;
}
public void setStatus(StatusUsuario status) {
this.status = status;
}
public List<GrupoUsuario> getUsuarioGrupos() {
return usuarioGrupos;
}
public void setUsuarioGrupos(List<GrupoUsuario> usuarioGrupos) {
this.usuarioGrupos = usuarioGrupos;
}
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@Entity
@Table(uniqueConstraints=@UniqueConstraint(columnNames={“usuario_id”,“grupo_id”}))
public class GrupoUsuario implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue
private Long id;
@ManyToOne(fetch=FetchType.LAZY)
private Grupo grupo;
@ManyToOne(fetch=FetchType.LAZY)
private Usuario usuario;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public Grupo getGrupo() {
return grupo;
}
public void setGrupo(Grupo grupo) {
this.grupo = grupo;
}
public Usuario getUsuario() {
return usuario;
}
public void setUsuario(Usuario usuario) {
this.usuario = usuario;
}
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
[RESOLVIDO] Agora entendi que minha dificuldade estava na criação da query com Criteria do Hibernate.
Consegui resolver criando queries com “setFetchMode” e carregando as informações adicionais quando necessário…