Olá!
Estou desenvolvendo um sistema bibliotecário como projeto de final de curso.
No meu sistema criei um metodo que faça update de um campo quando o livro for emprestado.
Veja o metodo que fiz no emprestimoDAO:List<Exemplar>exemplares;
public void mudarStatusEmprestimo(int Codigo) {
Session session = HibernateUtil.getSessionFactory().openSession();
exemplares = session.createQuery("UPDATE Exemplar set inEmprestimo = 1 where codExemplar = " + Codigo).list();
}
public static void main(String[] args) {
Session sessao = HibernateUtil.getSessionFactory().openSession();
Transaction transacao = sessao.beginTransaction();
ExemplarDAO exemplarDAO = new ExemplarDAO();
Emprestimo emprestimo = new Emprestimo();
Usuario usuario = (Usuario) sessao.load(Usuario.class, 8);
emprestimo.setCodUsuario(usuario);
emprestimo.setDaEmprestimo(new Date());
emprestimo.setDaDevolucao(new Date());
//Aqui defino qual o codigo do exemplar da obra
Exemplar exemplObra2 = exemplarDAO.findById(35);
int Codigo = 35;
try {
//Neste laço eu vejo se o campo do Inconsulta (Campo que distingui se o livro é pra empréstimo ou consulta) é 1 =só pra consulta ou 0 = pode ser emprestado.
if (exemplObra2.getInConsulta() != 1) {
emprestimo.getExemplar().add(exemplObra2);
JOptionPane.showMessageDialog(null, "Empréstimo efetuado com sucesso!!");
//Aqui eu chamo o método do Update para atualizar o campo InEmprestimo do exemplar para 1 = emprestada. (Num método de devolução faço o contrário, atualizo para 0 = disponível)
EmprestimoDAO.fabricaEmprestimoDAO().mudarStatusEmprestimo(Codigo);
sessao.save(emprestimo);
transacao.commit();
} else {
JOptionPane.showMessageDialog(null, "Este não pode ser emprestado!");
}
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "Empréstimo não efetuado: " + e);
}
sessao.close();
}
Quando executo dá o seguinte erro:
[color=red]Not supported for DML operations [UPDATE Dominio.Exemplar set inEmprestimo = 1 where codExemplar = 35][/color]
Por que deu esse erro?
Tem um jeito melhor e mais viável?
Agradeço.
