Feras como posso resolver essa exceção
org.hibernate.exception.ConstraintViolationException: could not insert:
Feras como posso resolver essa exceção
org.hibernate.exception.ConstraintViolationException: could not insert:
Essa exceção indica que a integridade de uma constraint está sendo violada, algo como tentar deletar um registro que ainda tem relação com outra tabela. Verifique qual registro está sendo removido (se é que é esse o problema) e verifique os associados à ele.
Flw! :thumbup:
o Problema acontece quando vai inserir
Então pode ser porque você está inserindo um valor duplicado e há uma constraint que proíbe isso, para resolver jogue no banco o sql que o hibernate gera e olhe a mensagem que o banco retorna quando violar a constraint, então é só ver o que está errado no código de inserção.
Flw! :thumbup:
Posta o seu método de insert. Pode ter algum problema nele.
Mas é como o von.juliano citou, problemas de duplicidade de chave no banco.
Pois é vc ta querendo inserir, exemplo, Cliente ID=9 enquanto no banco já existe alguem com esse ID.
[=
Feras
o problema era porque o campo e not null e não tinha setado um valor default para ele por isso o erro
agora que setei um valor default esta resolvido valeu a todos
Boa tarde pessoal, me desculpem ressucitar o tópico mas estou com o mesmo problema
Fiz o teste que o von.juliano solicitou:
no meu caso o insert funciona normalmente direto no banco de dados.
Este é o insert gerado pelo Hibernate no console:
Hibernate:
select
voto_.usuario,
voto_.produto,
voto_.data as data10_,
voto_.qtdVoto as qtdVoto10_
from
VOTO voto_
where
voto_.usuario=?
and voto_.produto=?
Hibernate:
insert
into
VOTO
(data, qtdVoto, usuario, produto)
values
(?, ?, ?, ?)
Meu método
public ActionForward votar(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws Exception {
HttpSession session = request.getSession();
String valor = request.getParameter("produto");
Voto voto = new Voto();
voto.setProduto(new Produto());
voto.getProduto().setCode(Long.parseLong(valor));
DAOFactory.getVotoDao().saveOrUpdate(voto);
return mapping.findForward("voto");
}
Se alguem puder me dar uma força… vlw
Cara ve se os dados que vc esta inserindo já existe no banco
Cara meu banco tah zerado! não tem nenhum dado inserido
Ace vc tem as chaves primaria ou estrangeira em sua tabela ?
se sim deve ser algo relacionada a elas, tenta adicionar essa anotação no seu codigo
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="Idcoluna")
private long id;
olá robsonsan,
Cara, nessa tabela VOTO eu tenho chave as chaves primarias que são:
USUARIO que faz referencia a CPF da tabela USUARIO,
e PRODUTO que faz referencia a CODIGO da tabela PRODUTO
e por isso não posso deixar o campo como auto incremento “@GeneratedValue(strategy=GenerationType.AUTO)” (posso estar falando besteira)
porque cada usuario pode votar somente uma vez em um produto.
minha estrutura está assim:

Valeu robsonsan, salvou minha vida ! muito obrigado mesmo
estava com o memso problema