@ManyToOne JPA 关系可以为空吗?

我有一个表,具有另一个表的外键(多对一关系),但我希望它是可空的。

像这样:

public class SubType() {

    @Id
    @GeneratedValue(generator = "system-uuid")
    @GenericGenerator(name = "system-uuid", strategy = "uuid")
    private String id;

}

public class TopUp {

    @Column(nullable = true)
    @ManyToOne(optional = false, fetch = FetchType.LAZY)
    private SubType subType;

}

但抛出并说子类型不能为空。有没有办法让 ManyToOne 接受 null?@Column(nullable = true)NullPointerException


答案 1

您需要设置:

@ManyToOne(optional = true, fetch = FetchType.LAZY)

不。optional=false

将指示 DDL 生成工具包含 SQL 列类型约束。@Column(nullable=true)NULL

有关 vs 的更多信息,请查看此 StackOverflow 答案optionalnullable


答案 2

试试这个:

@JoinColumn(name = "subType_id", nullable = true)

推荐