Dficiculdade com mapeamentos

Ola pessoal,

Esotu tendo dificuldades em montar um mapeamento entre varias tabelas relacionadas com uma outra com o JPA.

A minha situacao é a seguinte: possuo varias tabelas que posuem chave estrangeira para a tabela Pais.
Quando montei as classes de JPA, fiz os relacionamentos, mas logo quando vou rodar um teste aparece uma Exception:

[code]Exception in thread "main" javax.persistence.PersistenceException: Exception [TOPLINK-0] (Oracle TopLink Essentials - 2.0.1 (Build b09d-fcs (12/06/2007))): oracle.toplink.essentials.exceptions.IntegrityException
Descriptor Exceptions:

Exception [TOPLINK-48] (Oracle TopLink Essentials - 2.0.1 (Build b09d-fcs (12/06/2007))): oracle.toplink.essentials.exceptions.DescriptorException
Exception Description: Multiple writable mappings exist for the field [documen_candempr.cod_pais]. Only one may be defined as writable, all others must be specified read-only.
Mapping: oracle.toplink.essentials.mappings.OneToOneMapping[codPais]
Descriptor: RelationalDescriptor(br.com.mercur.th.model.DocumenCandempr --> [DatabaseTable(documen_candempr)])

Runtime Exceptions:

    at oracle.toplink.essentials.internal.ejb.cmp3.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:239)
    at oracle.toplink.essentials.internal.ejb.cmp3.base.EntityManagerFactoryImpl.getServerSession(EntityManagerFactoryImpl.java:93)
    at oracle.toplink.essentials.internal.ejb.cmp3.base.EntityManagerFactoryImpl.createEntityManagerImpl(EntityManagerFactoryImpl.java:126)
    at oracle.toplink.essentials.internal.ejb.cmp3.base.EntityManagerFactoryImpl.createEntityManagerImpl(EntityManagerFactoryImpl.java:120)
    at oracle.toplink.essentials.internal.ejb.cmp3.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:91)
    at br.com.mercur.th.action.FormAcademicAction.main(FormAcademicAction.java:78)

Caused by: Exception [TOPLINK-0] (Oracle TopLink Essentials - 2.0.1 (Build b09d-fcs (12/06/2007))): oracle.toplink.essentials.exceptions.IntegrityException
Descriptor Exceptions:

Exception [TOPLINK-48] (Oracle TopLink Essentials - 2.0.1 (Build b09d-fcs (12/06/2007))): oracle.toplink.essentials.exceptions.DescriptorException
Exception Description: Multiple writable mappings exist for the field [documen_candempr.cod_pais]. Only one may be defined as writable, all others must be specified read-only.
Mapping: oracle.toplink.essentials.mappings.OneToOneMapping[codPais]
Descriptor: RelationalDescriptor(br.com.mercur.th.model.DocumenCandempr --> [DatabaseTable(documen_candempr)])

Runtime Exceptions:

    at oracle.toplink.essentials.internal.sessions.DatabaseSessionImpl.initializeDescriptors(DatabaseSessionImpl.java:473)
    at oracle.toplink.essentials.internal.sessions.DatabaseSessionImpl.initializeDescriptors(DatabaseSessionImpl.java:405)
    at oracle.toplink.essentials.internal.sessions.DatabaseSessionImpl.postConnectDatasource(DatabaseSessionImpl.java:722)
    at oracle.toplink.essentials.internal.sessions.DatabaseSessionImpl.loginAndDetectDatasource(DatabaseSessionImpl.java:604)
    at oracle.toplink.essentials.ejb.cmp3.EntityManagerFactoryProvider.login(EntityManagerFactoryProvider.java:280)
    at oracle.toplink.essentials.internal.ejb.cmp3.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:229)
    ... 5 more

Java Result: 1
[/code]

E essa exception se repete para cada classe que se relaciona com a classe Pais.
Porem, pesquisando no Google vi que o pessoal coloca INSERTABLE=FALSE e UPDATABLE=FALSE. E ai que comeca a minha dor de cabeca…

Ao fazer isso, quando seto na numa classe um Pais, este nao é persistido. O JPA simplesmente coloca NULL no campo que relaciona com Pais.

O que pode ser isso?

Aqui vai as minhas classes:

[code]
@Entity
@Table(name = "documen_candempr")
@NamedQueries({})
public class DocumenCandempr implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(name = "cdn_candempr", nullable = false)
private Integer cdnCandempr;


@JoinColumn(name = "cod_pais", referencedColumnName = "cod_pais")
@ManyToOne
private RhPais codPais;

get e set

}[/code]

@Entity @Table(name = "rh_pais") @NamedQueries({ @NamedQuery(name="RhPais.selectAll", query="SELECT r FROM RhPais r ORDER BY r.nomPais") }) public class RhPais implements Serializable { @Id @Column(name = "cod_pais", nullable = false) private String codPais; @OneToMany(cascade = CascadeType.ALL, mappedBy = "codPais") private Collection<DocumenCandempr> documenCandemprCollection; ... get e sets }
Classe de teste

        EntityManagerFactory emf = Persistence.createEntityManagerFactory( "TH-CurriculuPU" );
        EntityManager em = emf.createEntityManager();
        
        RhPais pais = em.find(RhPais.class, "BRA");

        DocumenCandempr documentoCandidato = new DocumenCandempr( 11 );
        documentoCandidato.setCodPais(pais);
        EntityTransaction transaction = em.getTransaction();
        transaction.begin();
        em.persist(documentoCandidato);
        transaction.commit();

Alguma segestão?

Alguem?

Galera preciso que alguém me ajude… Estou precisando de um código em java que calcule o endereço do ip para saber se da classe A, B, C, D ou E, qtdade de hosts e subredes que este endereço possui…
Alguém que souber de algum material por valor me ajude… Valeu!!!