Problemas com Hibernate UPDATE varias tabelas MYSQL

2 respostas
Leandro_R_Combinato

Favor alguem pode me ajuda com esse update em varias tabelas

public void alterarPessoaHb(Pessoa pessoa) throws DAOException {
		Session sessions = HbLocator.currentSession();
		Transaction tx = sessions.beginTransaction();
		try {
			Query query = sessions.createQuery(
					" UPDATE Pessoa p " +
					" ,Endereco e " +
					" ,CadastroPessoa cp " +
					" ,ImpostosReter ir " +
					" SET p.tipoPessoa = ? " +
					" , p.codAlternativo = ? " +
					" , p.nomeCompleto = ? " +
					" , p.nomeRazao = ? " +
					" , p.nomeFantasia = ? " +
					" , p.sexo = ? " +
					" , p.dataNasc = ? " +
					" , p.rg = ? " +
					" , p.cpf = ? " +
					" , p.cnpj = ? " +
					" , p.inscrEstadual = ? " +
					" , p.inscrMunicipal = ? " +
					" , e.logradouro = ? " +
					" , e.numero = ? " +
					" , e.bairro = ? " +
					" , e.cidade = ? " +
					" , e.estado = ? " +
					" , e.cep = ? " +
					" , e.email = ? " +
					" , cp.cadPor = ? " +
					" , cp.cadData = ? " +
					" , cp.cadAltPor = ? " +
					" , cp.cadAltData = ? " +
					" , ir.inss = ? " +
					" , ir.iss = ? " +
					" , ir.irrf = ? " +
					" , ir.irrj = ? " +
					" , ir.cofins = ? " +
					" , ir.ipi = ? " +
					" , ir.pis = ? " +
					" , ir.csll = ? " +					
					" WHERE p.codReduzido = ? " +
					" AND e.id = e.endereco_ID " +
					" AND cp.id = cp.cadastroPessoa_ID " +
					" AND ir.id = ir.impostosReter_ID ")
					.setString(0, pessoa.getTipoPessoa())
					.setString(1, pessoa.getCodAlternativo())
					.setString(2, pessoa.getNomeCompleto())
					.setString(3, pessoa.getNomeRazao())
					.setString(4, pessoa.getNomeFantasia())
					.setString(5, pessoa.getSexo())
					.setDate(6, pessoa.getDataNasc())
					.setString(7, pessoa.getRg())
					.setString(8, pessoa.getCpf())
					.setString(9, pessoa.getCnpj())
					.setString(10, pessoa.getInscrEstadual())
					.setString(11, pessoa.getInscrMunicipal())
					.setString(12, pessoa.getEndereco().getLogradouro())
					.setString(13, pessoa.getEndereco().getNumero())
					.setString(14, pessoa.getEndereco().getBairro())
					.setString(15, pessoa.getEndereco().getCidade())
					.setString(16, pessoa.getEndereco().getEstado())
					.setString(17, pessoa.getEndereco().getCep())
					.setString(18, pessoa.getEndereco().getEmail())
					.setString(19, pessoa.getCadastroPessoa().getCadPor())
					.setDate(20, pessoa.getCadastroPessoa().getCadData())
					.setString(21, pessoa.getCadastroPessoa().getCadAltPor())
					.setDate(22, pessoa.getCadastroPessoa().getCadAltData())
					.setDouble(23, pessoa.getImpostosReter().getInss())
					.setDouble(24, pessoa.getImpostosReter().getIss())
					.setDouble(25, pessoa.getImpostosReter().getIrpf())
					.setDouble(26, pessoa.getImpostosReter().getIrpj())
					.setDouble(27, pessoa.getImpostosReter().getCofins())
					.setDouble(28, pessoa.getImpostosReter().getIpi())
					.setDouble(29, pessoa.getImpostosReter().getPis())
					.setDouble(30, pessoa.getImpostosReter().getCsll())
					.setString(31, pessoa.getCodReduzido());
					query.executeUpdate();
					tx.commit();
		} catch (Exception e) {
			e.printStackTrace();
			tx.rollback();
			throw new DAOException("[PessoaDAOImpl - updatePessoaHb] " + e.getMessage(), e);
		}
		HbLocator.closeSession();

	}
line 1:46: expecting "set", found ','
16:54:18,359 ERROR [STDERR] org.hibernate.hql.ast.QuerySyntaxException: expecting "set", found ',' near line 1, column 46 [ UPDATE br.com.locadeveloper.model.Pessoa p  , br.com.locadeveloper.model.Endereco e  , br.com.locadeveloper.model.CadastroPessoa cp  , br.com.locadeveloper.model.ImpostosReter ir  SET p.codAlternativo = ?  , p.nomeCompleto = ?  , p.nomeRazao = ?  , p.nomeFantasia = ?  , p.sexo = ?  , p.dataNasc = ?  , p.rg = ?  , p.cpf = ?  , p.cnpj = ?  , p.inscrEstadual = ?  , p.inscrMunicipal = ?  , e.logradouro = ?  , e.numero = ?  , e.bairro = ?  , e.cidade = ?  , e.estado = ?  , e.cep = ?  , e.email = ?  , cp.cadPor = ?  , cp.cadData = ?  , cp.cadAltPor = ?  , cp.cadAltData = ?  , ir.inss = ?  , ir.iss = ?  , ir.irrf = ?  , ir.irrj = ?  , ir.cofins = ?  , ir.ipi = ?  , ir.pis = ?  , ir.csll = ?  WHERE p.codReduzido = ?  AND e.id = e.endereco_ID  AND cp.id = cp.cadastroPessoa_ID  AND ir.id = ir.impostosReter_ID ]
	at org.hibernate.hql.ast.QuerySyntaxException.convert(QuerySyntaxException.java:31)
	at org.hibernate.hql.ast.QuerySyntaxException.convert(QuerySyntaxException.java:24)

sem mais. ja agradeço !
valeu!

2 Respostas

S

Blz Leo, seguinte meu véio, primeiro vc está sub utilizando o hibernate, não é pra vc ter este trabalho todo, mas blz

O está aqui, esta bagaça não começa com 0 começa com 1; olha ai como deve ficar

1. public void alterarPessoaHb(Pessoa pessoa) throws DAOException {  
   2.     Session sessions = HbLocator.currentSession();  
   3.     Transaction tx = sessions.beginTransaction();  
   4.     try {  
   5.         Query query = sessions.createQuery(  
   6.                 " UPDATE Pessoa p " +  
   7.                 " ,Endereco e " +  
   8.                 " ,CadastroPessoa cp " +  
   9.                 " ,ImpostosReter ir " +  
  10.                 " SET "  p.codAlternativo = ? " +  
  12.                 " , p.nomeCompleto = ? " +  
  13.                 " , p.nomeRazao = ? " +  
  14.                 " , p.nomeFantasia = ? " +  
  15.                 " , p.sexo = ? " +  
  16.                 " , p.dataNasc = ? " +  
  17.                 " , p.rg = ? " +  
  18.                 " , p.cpf = ? " +  
  19.                 " , p.cnpj = ? " +  
  20.                 " , p.inscrEstadual = ? " +  
  21.                 " , p.inscrMunicipal = ? " +  
  22.                 " , e.logradouro = ? " +  
  23.                 " , e.numero = ? " +  
  24.                 " , e.bairro = ? " +  
  25.                 " , e.cidade = ? " +  
  26.                 " , e.estado = ? " +  
  27.                 " , e.cep = ? " +  
  28.                 " , e.email = ? " +  
  29.                 " , cp.cadPor = ? " +  
  30.                 " , cp.cadData = ? " +  
  31.                 " , cp.cadAltPor = ? " +  
  32.                 " , cp.cadAltData = ? " +  
  33.                 " , ir.inss = ? " +  
  34.                 " , ir.iss = ? " +  
  35.                 " , ir.irrf = ? " +  
  36.                 " , ir.irrj = ? " +  
  37.                 " , ir.cofins = ? " +  
  38.                 " , ir.ipi = ? " +  
  39.                 " , ir.pis = ? " +  
  40.                 " , ir.csll = ? " +  
                       " , p.tipoPessoa = ? " +                  
  41.                 " WHERE p.codReduzido = ? " +  
  42.                 " AND e.id = e.endereco_ID " +  
  43.                 " AND cp.id = cp.cadastroPessoa_ID " +  
  44.                 " AND ir.id = ir.impostosReter_ID ") 
  45.                 
  46.                 .setString(1, pessoa.getCodAlternativo())  
  47.                 .setString(2, pessoa.getNomeCompleto())  
  48.                 .setString(3, pessoa.getNomeRazao())  
  49.                 .setString(4, pessoa.getNomeFantasia())  
  50.                 .setString(5, pessoa.getSexo())  
  51.                 .setDate(6, pessoa.getDataNasc())  
  52.                 .setString(7, pessoa.getRg())  
  53.                 .setString(8, pessoa.getCpf())  
  54.                 .setString(9, pessoa.getCnpj())  
  55.                 .setString(10, pessoa.getInscrEstadual())  
  56.                 .setString(11, pessoa.getInscrMunicipal())  
  57.                 .setString(12, pessoa.getEndereco().getLogradouro())  
  58.                 .setString(13, pessoa.getEndereco().getNumero())  
  59.                 .setString(14, pessoa.getEndereco().getBairro())  
  60.                 .setString(15, pessoa.getEndereco().getCidade())  
  61.                 .setString(16, pessoa.getEndereco().getEstado())  
  62.                 .setString(17, pessoa.getEndereco().getCep())  
  63.                 .setString(18, pessoa.getEndereco().getEmail())  
  64.                 .setString(19, pessoa.getCadastroPessoa().getCadPor())  
  65.                 .setDate(20, pessoa.getCadastroPessoa().getCadData())  
  66.                 .setString(21, pessoa.getCadastroPessoa().getCadAltPor())  
  67.                 .setDate(22, pessoa.getCadastroPessoa().getCadAltData())  
  68.                 .setDouble(23, pessoa.getImpostosReter().getInss())  
  69.                 .setDouble(24, pessoa.getImpostosReter().getIss())  
  70.                 .setDouble(25, pessoa.getImpostosReter().getIrpf())  
  71.                 .setDouble(26, pessoa.getImpostosReter().getIrpj())  
  72.                 .setDouble(27, pessoa.getImpostosReter().getCofins())  
  73.                 .setDouble(28, pessoa.getImpostosReter().getIpi())  
  74.                 .setDouble(29, pessoa.getImpostosReter().getPis())  
  75.                 .setDouble(30, pessoa.getImpostosReter().getCsll())  
  76.                 .setString(32, pessoa.getCodReduzido()); 
                         .setString(31, pessoa.getTipoPessoa())   
  77.                 query.executeUpdate();  
  78.                 tx.commit();  
  79.     } catch (Exception e) {  
  80.         e.printStackTrace();  
  81.         tx.rollback();  
  82.         throw new DAOException("[PessoaDAOImpl - updatePessoaHb] " + e.getMessage(), e);  
  83.     }  
  84.     HbLocator.closeSession();  
  85.   
  86. }
Leandro_R_Combinato

Galera conforme o santana_fabiano me disse que eu estou complicando essa Bagaça .....

Então outra pessoa me disse o Hibernate abre aspas Joao Paulo :

" se fosse pra fazer desse jeito que vc ta tentando eles nao tinham criado o hibernate/jpa nao sei como ta sua arquitetura, mas o fluxo é esse "

Galera a Solução foi essa abaixo, Hibernate JPA: o merge ja faz o insert e update eu ate tirei o botao do JSP ALTERAR ...... very easy!

public void salvarPessoaHb(Pessoa pessoa) throws DAOException {
Session sessions = HbLocator.currentSession();
Transaction tx = sessions.beginTransaction();
try {
sessions.merge(pessoa);
tx.commit();

} catch (Exception e) {
tx.rollback();
throw new DAOException("[PessoaDAOImpl - salvarPessoaHb] " + e.getMessage(), e);
}
HbLocator.closeSession();

}

[code]

Valeu!
Obrigado a todos que me ajudaram!

Criado 13 de dezembro de 2010
Ultima resposta 13 de dez. de 2010
Respostas 2
Participantes 2