Hibernate + Oracle (ConstraintViolationException)

Prezados,

Ao tentar gravar no um registro da entidade abaixo, obtenho o seguinte erro:

29709 [http-bio-8089-exec-3] ERROR org.hibernate.event.def.AbstractFlushingEventListener - Could not synchronize database state with session
org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update
	at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:96)
	at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)

Entidade que está sendo persistida:

public class Envolvido implements Serializable {

	private static final long serialVersionUID = 2955125876671793107L;

	@Id
	@GeneratedValue(strategy = GenerationType.SEQUENCE)
	@Basic(optional = false)
	@Column(name = "SEQ_ENVONL_FISCAL_AF")
	private Integer sequencia;

	@JoinColumn(name = "SEQ_ACAO_FISCALIZATORIA", referencedColumnName = "SEQ_ACAO_FISCALIZATORIA")
        @ManyToOne
        private AcaoFiscalizatoria acaoFiscalizatoria;
        
        ...

Debugando vi que o erro está relacionado a entidade AcaoFiscalizatoria, que está mapeada da seguinte forma:

@Entity
@Table(name = "ACAO_FISCALIZATORIA")
@javax.persistence.SequenceGenerator(
	    name="SQ_ACAO_FISCALIZATORIA",
	    sequenceName="SQ_ACAO_FISCALIZATORIA"
	)
public class AcaoFiscalizatoria implements Serializable {

	private static final long serialVersionUID = 1126920011501549020L;

	@Id
	//@GeneratedValue(strategy = GenerationType.AUTO)
	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SQ_ACAO_FISCALIZATORIA")
	@Basic(optional = false)
	@Column(name = "SEQ_ACAO_FISCALIZATORIA")
	private Integer sequencia;

        @OneToMany(mappedBy = "acaoFiscalizatoria")
	private List<Envolvido> envolvidoList;

        ...

O identificador dessa entidade é o campo sequencia que é gerado por uma sequence no banco Oracle. Então quando grava uma AcaoFiscalizatoria armazeno a mesma no contexto da aplicação. Muitas outras tela precisam dos dados da AcaoFiscalizatoria. Quando vou gravar dados de outra tela, vi que a seguencia do objeto é diferente da sequencia gravada no BD… Muito estranho isso… Por exemplo se no banco foi gravada a sequencia 1145, no objeto o valor dela é 1144 . Daí quando vou salvar um objeto associado, ocorre o erro de ConstraintViolationException pois não existe esta chave no BD…

Alguém já passou por problema semelhante?