spring-data-jpa 关系“invoice”的列“header_id”中的JPA空值违反了PostgresSQL的非空约束条件

x7yiwoj4  于 2022-11-10  发布在  Spring
关注(0)|答案(1)|浏览(148)

保存数据时出错
错误原因:错误:关系“invoice”的列“header_id”中的空值违反了非空约束条件详细信息:失败行包含(...null)。

标题

@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Entity
@Table(name = "header")
public class Header implements Serializable {

    private static final long serialVersionUID = 3363186434410305269L;

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "header_id")
    private Long headerId;

    @Column(name = "submitted_by", length = 17)
    private String submittedBy;

    @OneToMany(mappedBy = "header", cascade = CascadeType.ALL)
    @Builder.Default
    private List<Invoice> invoices = new ArrayList<>();
}

发票

@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Entity
@Table(name = "invoice")
public class Invoice implements Serializable {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "invoice_id")
    private Long invoiceId;

    @Column(name = "serial_no")
    private Integer serialNo;

    @JsonIgnore
    @ManyToOne
    @JoinColumn(name = "header_id", nullable = false)
    private Header header;
}

请帮我解决这个错误。

fafcakar

fafcakar1#

我认为这是因为你的headerId可以是空的,因为你使用“Long”作为类型,这是一个很好的做法,但是你应该删除Invoice.java中的nullable = false。把nullable = false放在你的数据库规则中。如果这个问题不是来自那里,当你创建你想保存在数据库中的对象时,检查你的Header类的headerId不是空的。

相关问题