Mapeamento Jpa Foken key Null

7 respostas
E

Gostaria de mapear um campo da minha tabela, que permitisse gravar a forenkey como Nullo

segue abaixo meu codigo

@JoinColumn(name = "participante_id", referencedColumnName = "id")
@ManyToOne
private Participante participante;

Em algumas situações, o participante vai vir preenchido e em alguns casos NÃO, como eu poderia mapear , para permitir que ele persistir no banco como NULL??

Obrigado

Evandro

7 Respostas

Jonathan_Medeiros

O mapeamento é normal, acredito que não tem alteração nenhuma, basta não ter a coluna com restrição NOT NULL no banco de dados.

E

@Jonathan_Medeiros, no banco, a coluna não está nott null, se eu fizer um script com essa coluna Null, ela inclui normalmente

Jonathan_Medeiros

Acredito que deveria funcionar normalmente neste caso, está tendo alguma mensagem de erro?

E

tem sim, esta dando essa mensagem :slight_smile:
(javax.persistence.RollbackException) javax.persistence.RollbackException: java.lang.IllegalStateException:
During synchronization a new object was found through a relationship that was not marked cascade PERSIST:
br.com.xxxxx.model.cadastro.Participante { id: null

Jonathan_Medeiros

Tenta acrescentar o cascade na relação:

@ManyToOne(fetch = FetchType.EAGER, cascade = CascadeType.MERGE)

darlan_machado

Vai estourar exceção, afinal, o banco não aceita inclusão de valores nulos. Altere a tabela e remova a constraint.

Jonathan_Medeiros

Não tinha feito a leitura corretamente da sua resposta, desculpe.

Veja bem, se a coluna está definida como NÃO NULA (not null), nunca em hipótese alguma ela vai aceitar valores nulos, ou seja, sempre deverá existir um valor válido.

Resolução: altere a restrição da coluna no banco de dados de NOT NULL para NULL.

Criado 16 de abril de 2019
Ultima resposta 16 de abr. de 2019
Respostas 7
Participantes 3