Boa tarde Galera!
Então estou com algumas dificuldades, acho que por falta de conhecimento. Então preciso da ajuda de vocês!
Estou usando o Hibernate, vraptor e java…
Bom preciso salvar dois registros ao mesmo tempo para garantir a integridade dos mesmo. Exemplo tenho uma tabela chamada matricula e preciso salva o transporte ao mesmo tempo.
O ideal seria aplicar um SQL assim:
start transaction;
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
INSERT INTO `tb_matricula` (`uuid_matricula`, `tp_matricula`, `st_matricula`, `dt_st_matricula`, `uuid_pessoa`, `id_escola`, `ano_letivo`, `id_tp_ensino`, `id_serie`, `id_turno_pretendido`, `dt_matricula`, `utilizada_matric_autom`, `proced_pert_escola`, `proced_pert_rede_mun`, `deferida`, `st_processo`, `obs`, `uuid_turma`, `nu_chamada`, `st_aprov`)
VALUES
( (SELECT REPLACE(UUID(), '-', '')), '1', '1', CURRENT_DATE(), 'ff80818139de1e740139df94dff9001e', '5', '2013', '14', '02', '2', CURRENT_DATE(), 1, 'S', 'S', 'N', '', 'Inserido através Renovação de Turma', '402880963dace942013dad6d155d0000', null, 0);
insert into `tb_pessoa_transporte_escolar` (uuid_pessoa_transp_escolar,uuid_pessoa,dt_registro,uuid_user_i,id_escola,ano_letivo, dt_exclusao, obs, uuid_user_e)
VALUES (UUID_SHORT(), 'ff80818139de1e740139df94dff9001e', '2013-06-07 14:08:00','00479D42C47211E19BFC90E6BAB45357', '5', '2013', null, 'teste insert', null);
commit;
Porém não to conseguindo…
O meu código java ta assim:
public void saveManual(String idMatricula, String idPessoa,
Integer idEscola, String anoLetivo, String tipoEnsino,
String serie, String turno, Calendar dataMatricula,
String matriculaAutomatica, String pertEscola,
String pertRedeMunicipal, String deferida, String situacaoProcesso,
String obs, String idTurma, Integer stAprov, String dtRegistro,
String usuarioInseriu)throws CommonException {
// String sql0 = ("start transaction; SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;");
// Query query0 = this.session.createSQLQuery(sql0);
// query0.executeUpdate();
String sql = (
// "start transaction; SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED; " +
"INSERT INTO `tb_matricula` (`uuid_matricula`, `tp_matricula`, `st_matricula`, `dt_st_matricula`, `uuid_pessoa`, `id_escola`, `ano_letivo`, `id_tp_ensino`, `id_serie`, `id_turno_pretendido`, `dt_matricula`, `utilizada_matric_autom`, `proced_pert_escola`, `proced_pert_rede_mun`, `deferida`, `st_processo`, `obs`, `uuid_turma`, `nu_chamada`, `st_aprov`) VALUES"
+ "( (SELECT REPLACE(UUID(), '-', '')), '1', '1', CURRENT_DATE(), :idPessoa, :idEscola, :anoLetivo, :tipoEnsino, :serie, :turno, CURRENT_DATE(), 1, :pertEscola, :pertRedeMunicipal, :deferida, :situacaoProcesso, 'Inserido através Renovação de Turma', :idTurma, null, 0);");
String sql2 = (" insert into `tb_pessoa_transporte_escolar` (`uuid_pessoa_transp_escolar`,`uuid_pessoa`, `dt_registro`,`uuid_user_i`,`id_escola`,`ano_letivo`, `dt_exclusao`, `obs`, `uuid_user_e`) "
+ " VALUES (UUID_SHORT(), :idPessoa, :dtRegistro, :usuarioInseriu, :idEscola, :anoLetivo, null, 'Inserido atraves da Renovação de Matrículas', null); ");
Query query = this.session.createSQLQuery(sql+" "+ sql2);
query.setParameter("idPessoa", idPessoa);
query.setParameter("idEscola", idEscola);
query.setParameter("anoLetivo", anoLetivo);
query.setParameter("tipoEnsino", tipoEnsino);
query.setParameter("serie", serie);
query.setParameter("turno", turno);
query.setParameter("pertEscola", pertEscola);
query.setParameter("pertRedeMunicipal", pertRedeMunicipal);
query.setParameter("deferida", deferida);
query.setParameter("situacaoProcesso", situacaoProcesso);
query.setParameter("idTurma", idTurma);
query.setParameter("dtRegistro", dtRegistro);
query.setParameter("usuarioInseriu", usuarioInseriu);
query.setParameter("idEscola", idEscola);
query.setParameter("anoLetivo", anoLetivo);
query.toString();
query.executeUpdate();
}
A minha ideia foi essa acima, mas não deu certo.
Erro:
...br.com.caelum.vraptor.InterceptionException: exception raised, check root cause for details: org.hibernate.exception.SQLGrammarException: could not execute native bulk manipulation query
...
Caused by: org.hibernate.exception.SQLGrammarException: could not execute native bulk manipulation query
...
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'INSERT INTO `tb_pessoa_transporte_escolar` (`uuid_pessoa_transp_escolar`,`uuid_p' at line 1
...
Vocês podem me dar uma sugestão de como fazer?
[ ]s…