Marcelo, valeu pela ajuda, mas nao testei ainda não, justamente porque estou com problemas no meu mapeamento.
Seguinte: minha tabela usuario tem um campo chamado tipo_usuario_codigo, que está ligado ao campo codigo da tabela tipo_usuario. Ambos os campos são do tipo integer (tanto codigo quanto tipo_usuario_codigo), até aí tudo bem, certo?
As minhas entidades estão assim:
Usuario
@Entity
@Table(name = "usuario", schema = "catalogo")
public class Usuario implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "codigo")
private Integer codigo;
@Basic(optional = false)
@Column(name = "login")
private String login;
@Basic(optional = false)
@Column(name = "senha")
private String senha;
@Column(name = "nome")
private String nome;
@JoinColumn(name = "tipo_usuario_codigo", referencedColumnName = "codigo")
@ManyToOne(optional = false)
private TipoUsuario tipoUsuarioCodigo;
TipoUsuario
@Entity
@Table(name = "tipo_usuario", schema = "catalogo")
public class TipoUsuario implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "codigo")
private Integer codigo;
@Basic(optional = false)
@Column(name = "tipo")
private String tipo;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "tipoUsuarioCodigo")
private Collection<Usuario> usuarioCollection;
O problema é: como setar Usuario.tipoUsuario para depois persistir meu objeto usuario no BD? Não sei como fazer isso, na minha classe usuario tenho um atributo do tipo TipoUsuario, mas na minha tabela usuario, o meu campo é do tipo integer.
Quando eu faço isso na minha servletUsuario me retorna erro:
String login = request.getParameter("login");
String senha = request.getParameter("senha");
String nome = request.getParameter("nome");
int tipo = Integer.parseInt(request.getParameter("tipo"));
tipoUsuarioDao = new TipoUsuarioDAO(session);
usuario.setLogin(login);
usuario.setSenha(senha);
usuario.setNome(nome);
usuario.setTipoUsuarioCodigo(tipoUsuarioDao.Procurar(tipo));
try {
usuarioDao = new UsuarioDAO(session);
usuarioDao.Inserir(usuario);
transaction.commit();
}
catch (Exception e) {
out.println ("Não salvou: " + e.getMessage());
transaction.rollback();
}
finally {
session.flush();
session.close();
}