@ManyToOne JPA关系可以为null吗?

sdnqo3pr  于 2023-10-19  发布在  其他
关注(0)|答案(3)|浏览(265)

我有一个表,有另一个表(多对一关系)的外键,但我希望它是空的。
大概是这样的:

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;

}

但是@Column(nullable = true)抛出了NullPointerException,并说subtype不能为null。有没有办法让ManyToOne接受null?

vwhgwdsa

vwhgwdsa1#

默认情况下,@ManyToOne关联是可选的,因此如果您希望它们可以为空,则不需要设置任何内容。
但是,由于您设置了optional=false属性,因此将其设为强制属性。
因此,而不是:

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

像这样设置:

@ManyToOne(fetch = FetchType.LAZY)

默认情况下,optionaltrue
另一方面,@Column(nullable=true)用于指示SQL生成工具包含NULL SQL列类型约束。

m1m5dgzv

m1m5dgzv2#

试试这个:

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

mwecs4sa3#

只有这个帮助了我:

public class TopUp {
    @ManyToOne
    @JoinColumn(columnDefinition="integer", name="subtype_id")
    private SubType subType;
}

columnDefinition是一个解决方案!

相关问题