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?
Passe a classe FormaPagamento, ItemVenda tbm
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;
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?
[quote=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?
[/quote]
Em produção só deleta itemVenda e venda,dai a ConstraintViolation
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.
[quote=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.[/quote]
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.