Realizar update com sql personalizado no hibernate JSF

PostgreSQL

Oracle

Java

14/11/2016

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?
Matheus Cano

Matheus Cano

Curtidas 0
POSTAR