Fórum Problemas ao Cadastrar com Hibernate #521897
04/06/2015
0
na tabela usuario, só que aparece o seguinte erro:
Desde já agradeço a todos!
Entidade - Empresa
// imports
@Entity
public class Empresas {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int idEmpresa;
@Column(nullable = false)
private int idEstado;
@Column
private String razaoSocial;
@Column
private String nomeFantasia;
@Column
private String cnpj;
@Column
private String inscricaoEstadual;
@Column
private String endereco;
@Column
private String numero;
@Column
private String complemento;
@Column
private String cep;
@Column
private String bairro;
@Column
private String cidade;
@Column
private String email;
@Column
private String telefone;
@Column
private String celular;
@ManyToOne(optional = false, fetch = FetchType.EAGER)
@JoinColumn(name = "idEstado", referencedColumnName = "idEstado", insertable = false, updatable = false)
private Estado estado;
// getters and setters
Entidade - UsuarioEmpresa
//imports
@Entity
public class UsuarioEmpresa implements Serializable {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Integer idUsuEmpresa;
@Column
private Integer idEmpresa;
@Column
private String login;
@Column
private String senha;
@ManyToOne(optional = false, fetch = FetchType.EAGER)
@JoinColumn(name = "idEmpresa", referencedColumnName = "idEmpresa", insertable = false, updatable = false)
private Empresas empresa;
// getters and setters
EmpresaController - método Salvar()
public class EmpresaController {
private Empresas empresas = new Empresas();
private UsuarioEmpresa usuarioEmpresa = new UsuarioEmpresa();
private Estado estado = new Estado();
private DataModel<Empresas> empresa;
private DataModel<Estado> estados;
private String msg;
private String msgError = "";
public String salvar() throws Exception {
EmpresaDao dao = new EmpresaDao();
UsuarioEmpresaDao userDao = new UsuarioEmpresaDao();
if (this.empresas.getIdEmpresa() == 0) {
try {
Empresas empresa = dao.save(empresas);
usuarioEmpresa.setEmpresa(empresa);
userDao.save(usuarioEmpresa);
this.msg = "Empresa cadastrada com sucesso! Efetue o login.";
return "loginUsuario";
} catch (Exception e) {
this.msgError = "Falha ao cadastrar empresa: " + e.getMessage();
e.printStackTrace();
}
} else {
try {
dao.update(empresas);
this.msg = "Alteração realizada com sucesso!";
} catch (Exception e) {
this.msgError = "Falha na alteração: " + e.getMessage();
e.printStackTrace();
}
}
this.empresas = new Empresas();
this.empresa = null;
return null;
}
// getters and setters
EmpresaDAO
public class EmpresaDao {
private Session session = HibernateSession.getSession();
public Empresas save(Empresas entity) throws Exception {
try {
session.beginTransaction();
Empresas empresa = (Empresas) session.save(entity);
session.getTransaction().commit();
return empresa;
} catch (Exception e) {
session.getTransaction().rollback();
e.printStackTrace();
throw e;
}
}
}
UsuarioEmpresaDao
public String salvar() throws Exception {
EmpresaDao dao = new EmpresaDao();
UsuarioEmpresaDao userDao = new UsuarioEmpresaDao();
if (this.empresas.getIdEmpresa() == 0) {
try {
Empresas empresa = dao.save(empresas);
usuarioEmpresa.setEmpresa(empresa);
userDao.save(usuarioEmpresa);
this.msg = "Empresa cadastrada com sucesso! Efetue o login.";
return "loginUsuario";
} catch (Exception e) {
this.msgError = "Falha ao cadastrar empresa: " + e.getMessage();
e.printStackTrace();
}
} else {
try {
dao.update(empresas);
this.msg = "Alteração realizada com sucesso!";
} catch (Exception e) {
this.msgError = "Falha na alteração: " + e.getMessage();
e.printStackTrace();
}
}
this.empresas = new Empresas();
this.empresa = null;
return null;
}
}
Josivan Soares
Curtir tópico
+ 0Post mais votado
04/06/2015
Ronaldo Lanhellas
Gostei + 1
Mais Posts
04/06/2015
Ronaldo Lanhellas
Gostei + 0
04/06/2015
Josivan Soares
UsuarioEmpresaDAO
public class UsuarioEmpresaDao {
private Session session = HibernateSession.getSession();
public void save(UsuarioEmpresa entity) throws Exception {
try {
session.beginTransaction();
session.save(entity);
session.getTransaction().commit();
} catch (Exception e) {
session.getTransaction().rollback();
e.printStackTrace();
throw e;
}
}
public void update(UsuarioEmpresa entity) throws Exception {
try {
session.beginTransaction();
session.update(entity);
session.getTransaction().commit();
} catch (Exception e) {
session.getTransaction().rollback();
e.printStackTrace();
throw e;
}
}
}
Gostei + 0
05/06/2015
Ronaldo Lanhellas
Assim :
//imports
@Entity
public class UsuarioEmpresa implements Serializable {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Integer idUsuEmpresa;
@Column
private String login;
@Column
private String senha;
@ManyToOne(optional = false, fetch = FetchType.EAGER)
@JoinColumn(name = "idEmpresa")
private Empresas empresa;
// getters and setters
Outra coisa, não usamos nome de entidade no plural , o certo é Empresa.class e não Empresas.class
Gostei + 1
05/06/2015
Josivan Soares
Assim :
//imports
@Entity
public class UsuarioEmpresa implements Serializable {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Integer idUsuEmpresa;
@Column
private String login;
@Column
private String senha;
@ManyToOne(optional = false, fetch = FetchType.EAGER)
@JoinColumn(name = "idEmpresa")
private Empresas empresa;
// getters and setters
Outra coisa, não usamos nome de entidade no plural , o certo é Empresa.class e não Empresas.class
Então Ronaldo, em relação a entidade estar com o nome incoerente, eu percebi, mas como é um trabalho de faculdade onde outras pessoas estão mexendo aí não modifiquei, mas darei um toque no pessoal sim e muito obrigado por observar isso, continuando, eu apaguei esse Integer, mas mesmo assim não consegue cadastrar da o mesmo erro, eu acredito que seja problema na hora de converter o retorno do save() nessa parte do código:
EmpresaDAO
Tento pegar esse retorno no controller
Empresas empresa = dao.save(empresas); // tento pegar o retorno
usuarioEmpresa.setEmpresa(empresa); // seto a empresa pra preencher o idEmpresa na classe UsuarioEmpresa
userDao.save(usuarioEmpresa); // e por fim tento cadastrar
Mas ao fazer isso me da aquele erro
Gostei + 0
08/06/2015
Josivan Soares
Mudança no DAO de Empresa:
public Integer save(Empresa entity) throws Exception {
try {
session.beginTransaction();
Integer empresaID = (Integer) session.save(entity); //
session.getTransaction().commit();
return empresaID;
Mudança no salvar do Controller, o restante das linhas continuam:
public String salvar() throws Exception {
EmpresaDao dao = new EmpresaDao();
UsuarioEmpresaDao userDao = new UsuarioEmpresaDao();
if (this.empresa.getIdEmpresa() == 0) {
try {
Integer IdEmpresa = dao.save(empresa); // pego integer que o save() retorna e coloco em idEmpresa
Empresa empresa = new Empresa();
empresa.setIdEmpresa(IdEmpresa); // seto o IdEmpresa e atribuo o id de retorno do save()
usuarioEmpresa.setEmpresa(empresa); // agora pego a empresa com o id preenchido com o inteiro setando a joinColumn Empresa do UsuarioEmpresa
userDao.save(usuarioEmpresa); // agora mando salvar o usuarioEmpresa com o empresa preenchido com o id retornado do save()
this.msg = "Empresa cadastrada com sucesso! Efetue o login.";
return "loginUsuario";
} catch (Exception e) {
this.msgError = "Falha ao cadastrar empresa: " + e.getMessage();
e.printStackTrace();
}else{
.................
}
}
Obrigado reservar um pouco do seu tempo pra me ajudar!
espero que esse tópico ajude mais alguém :)
Abraço!
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)