1
resposta

chave estrangeira não persiste

Tenho uma tabela pai e uma tabela filha num relacionamento um para muitos. Ao salvar os dados são salvos na tabela pai e os varios registro nas tabelas filhos. Mas o campo de chave estrangeira na tabela filha fica como null ao ao inves de receber a chave primaria da tabela pai

@Table(name = "CONTRACT")
@EntityListeners(AuditingEntityListener.class)
public class Contratc {
  /** AppArsenal id, primary key of the apparsenal table. */
  @Id
  @Column(name = "ID_CONTRATO", nullable = false)
  @GeneratedValue(strategy = GenerationType.SEQUENCE)
  private long idcontrato;

  @Column(name = "CNPJ", nullable = false)
  private String cnpj;

  @Column(name = "DESCRIPTION", nullable = false)
  private String description;

  @OneToMany(mappedBy = "contratc", cascade = CascadeType.ALL)
  private List<BankAccount> bankAccount = new ArrayList<>();

}
    
    
    @Table(name = "BANKACCOUNT")
@EntityListeners(AuditingEntityListener.class)
public class BankAccount implements Serializable {

  /** AppArsenal id, primary key of the apparsenal table. */
  @Id
  @Column(name = "ID_BANKACCOUNT")
  @GeneratedValue(strategy = GenerationType.SEQUENCE)
  private long idBankAccount;

  @Size(max = 15, message = Constant.ACCOUNT_INVALID)
  @Column(name = "BANKACCOUNT")
  private String bankAccount;

  @Size(max = 5, message = Constant.AGENCY_INVALID)
  @Column(name = "AGENCYNUMBER")
  private String agencyNumber;

  @Column(name = "BANK")
  private String bank;


  @ManyToOne(fetch = FetchType.LAZY, targetEntity = Contratc.class)
  @JoinColumn(
      name = "ID_CONTRATO",
      insertable = true,
      updatable = true,
      referencedColumnName = "ID_CONTRATO")
  private Contratc contratc;
1 resposta

Olá Igor, tudo bem?

No código fornecido, há um erro de digitação na classe Contratc. O nome da classe está escrito como "Contratc" em vez de "Contract". Isso pode estar causando o problema de persistência da chave estrangeira na tabela BANKACCOUNT.