SEAM+JPA = Erro ao inserir uma entidade filho

Ola Pessoal,

Estou tentando inserir um registro filho porem da erro, alguem tem alguma ideia do que pode ser ?

Entidade Pai:

    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    @Column(name = "cod_contrato")
    private Long codContrato;
    
    @Column(name = "des_contrato")
    private String desContrato;
    
    @Column(name = "obs")
    private String obs;
    
    @Type(type = "statusEnumType")
    @Column(name = "des_status")
    private StatusEnum desStatus;
   	
    @Type(type = "simNaoEnumType")
    @Column(name = "finalizado")
    private SimNaoEnum finalizado;
	
    @JoinColumn(name = "tp_contrato", referencedColumnName = "cod_tipo_contrato")
    @ManyToOne
    private TiposContratos tpContrato;
    
    @JoinColumn(name = "cod_contato", referencedColumnName = "cod_contato")
    @ManyToOne
    private Contatos contato;
    
    @JoinColumn(name = "cod_grupo", referencedColumnName = "cod_grupo")
    @ManyToOne
    private Grupos grupo;
    
    @JoinColumn(name = "cod_pessoa", referencedColumnName = "cod_pessoa")
    @ManyToOne
    private Pessoa pessoa;
    
    @OneToMany(mappedBy = "contratos")
    private List<ContratosEspaco> contratosEspacoList; >>>> AQUI ESTA ESTA DANDO ERRO

Entidade Filho:

   @Id
   @Column(name = "cod_contrato")
   private Long codContrato;
	
   @Id
   @Column(name = "cod_espaco")
   private Long codEspaco;
    
   @Type(type = "statusEnumType")
   @Column(name = "des_status")
   private StatusEnum desStatus;
    
   @JoinColumn(name = "cod_contrato", referencedColumnName = "cod_contrato")
   @ManyToOne
   private Contratos contratos;
    
   @JoinColumn(name = "cod_espaco", referencedColumnName = "cod_espaco")
   @ManyToOne
   private Espacos espaco;

Inserindo apenas a entidade Pai consigo na boa.

Se eu tento inserir a entidade filha inserindo uma lista no pai e persistindo o pai assim:
Codigo:

			if (listaEspacoSelecionados.size() > 0){
				List<ContratosEspaco> lista = new ArrayList<ContratosEspaco>();
				for (Espacos obj : listaEspacoSelecionados){
					ContratosEspaco es = new ContratosEspaco();
					es.setCodContrato(contrato.getCodContrato());
					es.setCodEspaco(obj.getCodEspaco());
					es.setDesStatus(StatusEnum.ATIVO);
					lista.add(es);
				}
				getContrato().setContratosEspacoList(lista);
			}
			
			if (getContrato().getCodContrato() != null) {
				em.merge(getContrato());
			} else {
				em.persist(getContrato());
			}

Da o seguinte erro, conseguindo achar a entidade filha:

11:49:09,075 ERROR [STDERR] javax.persistence.EntityNotFoundException: Unable to find br.com.xyz.entity.ContratosEspaco with id br.com.xyz.entity.ContratosEspacoPK[codContrato=8, codEspaco=1]
11:49:09,075 ERROR [STDERR] 	at org.hibernate.ejb.Ejb3Configuration$Ejb3EntityNotFoundDelegate.handleEntityNotFound(Ejb3Configuration.java:113)

Ao tentar inserir a entidade Pai primeiro e depois a filha da o seguinte erro:

			if (getContrato().getCodContrato() != null) {
				em.merge(getContrato());
			} else {
				em.persist(getContrato());
			}
			
			if (listaEspacoSelecionados.size() > 0){
				for (Espacos obj : listaEspacoSelecionados){
					ContratosEspaco es = new ContratosEspaco();
					es.setCodContrato(contrato.getCodContrato());
					es.setCodEspaco(obj.getCodEspaco());
					es.setDesStatus(StatusEnum.ATIVO);
					em.persist(es);
				}
			}
11:40:57,129 INFO  [STDOUT] Hibernate: 
    insert 
    into
        contratos_espaco
        (cod_contrato, des_status, cod_espaco) 
    values
        (?, ?, ?)
11:40:57,129 INFO  [LongType] could not bind value '8' to parameter: 4; O índice 4 está fora do intervalo.
11:40:57,161 WARN  [JDBCExceptionReporter] SQL Error: 0, SQLState: S1093
11:40:57,161 ERROR [JDBCExceptionReporter] O índice 4 está fora do intervalo.
11:40:57,161 ERROR [AbstractFlushingEventListener] Could not synchronize database state with session
org.hibernate.exception.GenericJDBCException: could not insert: [br.com.xyz.entity.ContratosEspaco]

Alguem tem alguma ideia do que pode ser ?

Estou tuilizando Seam 2.2.1 + RichFaces 3.3.2 + Jboss 5.1.0 + SQL 2005

Obrigado,
Rodrigo

Galera uma outra coisa muito estranha:

Na entidade filho coloquei o insertable e o updatable = false

@JoinColumn(name = "cod_espaco", referencedColumnName = "cod_espaco", insertable = false, updatable = false)
@ManyToOne
private Espacos espaco;

Mas continua dando o mesmo erro.

Apos inserir o registro pai dou um flush() e um clear(). Depois no registro filho ao executar o flush() ele tenta inserir 2x o mesmo registro ai da erro de PK:

10:11:43,668 ERROR [JDBCExceptionReporter] Violation of PRIMARY KEY constraint ‘contratos_espaco_pk’. Cannot insert duplicate key in object ‘dbo.contratos_espaco’.

Se eu retiro do filho o insertable e o updatable e faco apos inserir o registro pai dou um flush() e um clear(). Depois no registro filho ao executar o flush() da o mesmo erro inicial:

10:21:24,572 INFO [LongType] could not bind value ‘8’ to parameter: 4; O índice 4 está fora do intervalo.
10:21:24,588 WARN [JDBCExceptionReporter] SQL Error: 0, SQLState: S1093
10:21:24,588 ERROR [JDBCExceptionReporter] O índice 4 está fora do intervalo.
10:21:24,588 ERROR [AbstractFlushingEventListener] Could not synchronize database state with session

Alguem tem alguma ideia do que pode ser ?

[]´s
Rodrigo