JPA @ManyToOne com FK nula

Tenho um relacionamento @ManyToOne onde a FK pode ser nula.
Consigo gravar o registro com a FK nula, porém, na outra tabela do relacionamento é inserido um registro (só com o id).

O relacionamento é o seguinte:
Um aluno pode ou não pertencer a uma instituição.
Meu mapeamento está assim:

Classe Aluno.java

@ManyToOne(cascade=CascadeType.PERSIST) @JoinColumn(name="idInstituicao", nullable = true, insertable = false, updatable = false) private Instituicao instituicao = new Instituicao();
Instituicao.java

@OneToMany(mappedBy="instituicao") private List<Aluno> alunos = new ArrayList<Aluno>();

Obs: se eu tirar o cascade do relacionamento ManyToOne, ocorre a seguinte exceção:
Caused by: java.lang.IllegalStateException: During synchronization a new object was found through a relationship that was not marked cascade PERSIST: modelo.entidade.Instituicao@cac61b.

Estou usando Postgres e EclipseLInk

Consegui resolver parcialmente o problema.
Adicionei o optional=true no @ManyToOne e agora consigo gravar o registro com FK null. E na outra tabela não é inserido nenhum registro.

Mas quando tento gravar um registro com a FK preenchida, aí recebo um erro de de violação de PK na tabela do @OneToMany. Ou seja, ele tentou inserir um novo registro na tabela Instituicao.

Qualquer ajuda é benvinda

finotti, experimente trocar o CascadeType.PERSIST por CascadeType.ALL. Outro detalhe é que não não vejo porque utilizar o insertable = false, updatable = false nesse seu caso e também acho desnecessário criar uma instância da Instituicao no relacionamento.