Método delete se comportando de forma estranha no JSF

6 respostas
R

Bom galera,tenho a seguinte entidade:

public class Venda extends BaseModel{

	@Id
	@GeneratedValue(strategy=GenerationType.SEQUENCE,generator="seq_venda")
	@Column(name="id",nullable=false,unique=true)
	private Integer id;

	@OneToMany(mappedBy = "venda",cascade=CascadeType.ALL)
	private List<FormaPagamento> formasPagamento;
	
	//@Cascade(org.hibernate.annotations.CascadeType.DELETE_ORPHAN) 
	@OneToMany(mappedBy="venda", cascade=CascadeType.ALL)
	private List<ItemVenda> itensVenda;

Executando no ambiente de dev,o método excluir executa corretamente como mostrado abaixo:

Hibernate: delete from public.formapagamento where id=?
Hibernate: delete from public.itemvenda where id=?
Hibernate: delete from public.venda where id=?

No entanto em produção a entidade ‘pai’ está sendo deletada antes dos ‘filhos’,o que está gerando uma ConstraintViolationException.Alguem ja passou por isso?

6 Respostas

tmvolpato

Passe a classe FormaPagamento, ItemVenda tbm

R

Atualizando:

Esse é o sql gerado em produção:

Hibernate: delete from public.itemvenda where id=?
Hibernate: delete from public.venda where id=?

Classes:

@Entity
public class ItemVenda extends BaseModel{

	private static final long serialVersionUID = 1L;

	@Id
	@GeneratedValue(strategy=GenerationType.SEQUENCE,generator="seq_itemvenda")
	@Column(name="id",nullable=false,unique=true)
	private Integer id;

	@JoinColumn(name="idvenda", referencedColumnName="id")
	@ManyToOne(optional=false) 
	private Venda venda;
@Entity
public class FormaPagamento extends BaseModel{

	private static final long serialVersionUID = 1L;

	@Id
	@GeneratedValue(strategy=GenerationType.SEQUENCE,generator="seq_formapagamento")
	@Column(name="id",nullable=false,unique=true)
	private Integer id;
	
	@JoinColumn(name="idvenda",referencedColumnName="id")
	@ManyToOne(optional=false)
	private Venda venda;
tmvolpato

No seu método remover
você faz um findById?

Ele chega a exluir a venda, formaPagamento e itemVenda? o problema é que ele não está excluindo por hierarquia certo?

R

tmvolpato:
No seu método remover
você faz um findById?

Ele chega a exluir a venda, formaPagamento e itemVenda? o problema é que ele não está excluindo por hierarquia certo?

Em produção só deleta itemVenda e venda,dai a ConstraintViolation

Hebert_Coelho

Estou acompanhando aqui só para ver as respostas que sairiam, mas tem uma que eu estou pensando.

A estrutura do banco está a mesma? Pergunto com relação as chaves de relacionamento entre as tabelas.

R

Hebert Coelho:
Estou acompanhando aqui só para ver as respostas que sairiam, mas tem uma que eu estou pensando.

A estrutura do banco está a mesma? Pergunto com relação as chaves de relacionamento entre as tabelas.

Fala Hebert,o banco é o mesmo.

Eis o contexto:
-Aplicação local acessando banco remoto:ok
-Aplicação remota acessando banco remoto:ConstraintViolation

Também não creio que eu tenha esquecido de subir nada pro servidor pois tbm ja verifiquei isso.

Criado 29 de outubro de 2012
Ultima resposta 29 de out. de 2012
Respostas 6
Participantes 3