2017-08-09 20 views
0

を設定しないとマージ、私の最初のエンティティがあるは、私は2列で構成関係を持つ2つのテーブルを持っているJPAは、FKのID

public class NFeProtocolo implements Serializable { 



/** 
    * 
    */ 
    private static final long serialVersionUID = 2092981840170296102L; 

    @Id 
    @ManyToOne 
    @JoinColumn(name = "nf_cabeca" , referencedColumnName="sequencial", updatable = false) 
    private NfCabeca nf_cabeca_id; 

    @Id 
    @Column(name = "protocolo", length = 100) 
    private String protocolo; 

    @Column(name = "operacao", length = 15, nullable = false) 
    @Enumerated(EnumType.STRING) 
    private NFeProtocoloOperacao operacao; 

    @Temporal(TemporalType.TIMESTAMP) 
    @Column(name = "data_hora", length = 29, nullable = false) 
    private Date dataHora; 

    @Column(name = "status", length = 10) 
    private String status; 
} 

問題があります私はNFCabeca

NFeProtocolo nFeProtocolo = new NFeProtocolo(protocolo, operacao, dataProtocolo, status); 
nFeProtocolo.setNf_cabeca_id(nf); 

nf.setProtocolo(nFeProtocolo); 
merge(nf); 

NFeProtocoloを設定したとき、私はエラーを取得する:

error message saying the column nf_cabeca cannot be set to null

実際にはできませんが、nf_cabecaの値を設定すると間違っていますか? オブジェクトをnFeProtocoloで見ると、nf_cabeca_idが公開されていません。

Protocolos内容:

[NFeProtocolo [protocolo=333170000339533, operacao=CRIACAO, dataHora=Wed Aug 09 09:19:11 BRT 2017, status=100]]

は、なぜそれが外nf_nf_cabeca_id設定されていませんか?

答えて

0

ソリューションはNfCabecaオン

public void setProtocolos(List<NFeProtocolo> protocolos) { 
    this.protocolos = protocolos; 
} 

を作成し、

@ManyToOne 
@JoinColumn(name = "nf_cabeca") 
private NfCabeca nf_cabeca_id; 
にNfeProtocoloにnf_cabeca_id変更しました
関連する問題