@ManyToOne JPA关系可以为null吗?

Nar*_*ges 16 java hibernate jpa hibernate-mapping many-to-one

我有一个表有另一个表的外键(多对一关系),但我希望它可以为空.

像这样的东西:

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;

}
Run Code Online (Sandbox Code Playgroud)

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

Vla*_*cea 33

你需要设置:

@ManyToOne(optional = true, fetch = FetchType.LAZY)
Run Code Online (Sandbox Code Playgroud)

没有optional=false.

@Column(nullable=true)是指示DDL生成工具,包括NULLSQL列类型约束.

有关optionalvs的更多信息nullable,请查看此StackOverflow答案.


小智 5

尝试这个:

@JoinColumn(name = "subType_id", nullable = true)
Run Code Online (Sandbox Code Playgroud)