Método delete se comportando de forma estranha no JSF

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.