Realizar update com sql personalizado no hibernate JSF
Boa noite pessoal, preciso da ajuda de vocês.
Montei um script sql pra quando for setar uma proposta como aceita, ela recusa todas as outras do mesmo projeto. Exemplo: Um projeto pode contem várias propostas, e eu posso selecionar só uma proposta como aceita e ao seleciona-la as outras ficaram como recusadas.
Script SQL = update proposta set statusproposta = 'recusada' where idproposta != 26 and projeto_idprojeto = 12;
Agora preciso tornar isso dinâmico e passar como parâmetro o idproposta e o idprojeto. Tentei sem sucesso desta forma:
PropostaDAO :
@SuppressWarnings("deprecation")
public void recusarPropostas(Integer idProposta,Integer idProjeto) {
Session sessao = HibernateUtil.getFabricaDeSessoes().openSession();
Transaction transacao = null;
try {
transacao = sessao.beginTransaction();
Query query = sessao.createSQLQuery("update proposta set statusproposta = 'recusada' where idproposta != :idproposta and projeto.idProjeto = :idprojeto;");
query.setParameter("idproposta", idProposta);
query.setParameter("projeto.idProjeto", idProjeto);
int result = query.executeUpdate();
transacao.commit();
} catch (RuntimeException erro) {
if (transacao != null) {
transacao.rollback();
}
throw erro;
} finally {
sessao.close();
}
}
ProjetoMB :
metodo(){
propostaDAO.recusarPropostas(propostaSelecionada.idProposta, propostaSelecionada.projeto.idProjeto);
}
Dá o seguinte erro: com.sun.faces.context.AjaxExceptionHandlerImpl handlePartialResponseError
GRAVE: java.lang.IllegalArgumentException: Unknown parameter name projeto.idProjeto
Porém não sei como atribuir o parametro passado para o atributo no banco, pois esse projeto.idProjeto é um 1 pra N. Como fazer pra esse metodo com update pegar os dois parametros?
Montei um script sql pra quando for setar uma proposta como aceita, ela recusa todas as outras do mesmo projeto. Exemplo: Um projeto pode contem várias propostas, e eu posso selecionar só uma proposta como aceita e ao seleciona-la as outras ficaram como recusadas.
Script SQL = update proposta set statusproposta = 'recusada' where idproposta != 26 and projeto_idprojeto = 12;
Agora preciso tornar isso dinâmico e passar como parâmetro o idproposta e o idprojeto. Tentei sem sucesso desta forma:
PropostaDAO :
@SuppressWarnings("deprecation")
public void recusarPropostas(Integer idProposta,Integer idProjeto) {
Session sessao = HibernateUtil.getFabricaDeSessoes().openSession();
Transaction transacao = null;
try {
transacao = sessao.beginTransaction();
Query query = sessao.createSQLQuery("update proposta set statusproposta = 'recusada' where idproposta != :idproposta and projeto.idProjeto = :idprojeto;");
query.setParameter("idproposta", idProposta);
query.setParameter("projeto.idProjeto", idProjeto);
int result = query.executeUpdate();
transacao.commit();
} catch (RuntimeException erro) {
if (transacao != null) {
transacao.rollback();
}
throw erro;
} finally {
sessao.close();
}
}
ProjetoMB :
metodo(){
propostaDAO.recusarPropostas(propostaSelecionada.idProposta, propostaSelecionada.projeto.idProjeto);
}
Dá o seguinte erro: com.sun.faces.context.AjaxExceptionHandlerImpl handlePartialResponseError
GRAVE: java.lang.IllegalArgumentException: Unknown parameter name projeto.idProjeto
Porém não sei como atribuir o parametro passado para o atributo no banco, pois esse projeto.idProjeto é um 1 pra N. Como fazer pra esse metodo com update pegar os dois parametros?
Matheus Cano
Curtidas 0