Estou fazendo um projeto onde relaciono usuarios a um projeto. Então encontrei problema agora na hora de salvar os dados no MySQL.
Ele não está salvando pois o retorno do picklist está dando null.
Abaixo as entidades e classes:
Usuario.java
public class Usuario implements Serializable {
private static final long serialVersionUID = -6385449045819412398L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
private String email;
private String nome;
private String contato;
private String fone;
private String senha;
@Enumerated(EnumType.STRING)
private UserType tipo;
@ManyToMany(mappedBy="usuarios")
private List<Projeto> projetos;
}
// ... getters and setters ...
Projeto.java
public class Projeto implements Serializable {
private static final long serialVersionUID = 1673111509363374099L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
private String nome;
private String descricao;
private String versao;
@Temporal(TemporalType.DATE)
@Column(name = "data_inicio")
private Date dataInicio;
@ManyToMany (cascade=CascadeType.PERSIST)
@JoinTable(name="usuario_projeto",
joinColumns=@JoinColumn(name="id_projeto"),
inverseJoinColumns=@JoinColumn(name="id_usuario"))
private List<Usuario> usuarios;
}
E na hora de salvar no banco de dados, eu acho a seguinte função do controller
public void save() {
if (projeto.getId() == null) {
this.target = (List<Usuario>) this.dualListProjetos.getTarget();
projeto.setUsuarios(this.target);
this.projeto = projetoService.insertProjeto(projeto);
super.addMessage(FacesMessage.SEVERITY_INFO,
"action.insert.success");
} else {
this.target = (List<Usuario>) this.dualListProjetos.getTarget();
for(Usuario u : target) {
System.out.println(u.getNome());
System.out.println(u.getEmail());
}
projeto.setUsuarios(this.target);
this.projeto = projetoService.updateProjeto(projeto);
super.addMessage(FacesMessage.SEVERITY_INFO,
"action.update.success");
}
}