I have a table that has foreign key of another table (many to one relationship) but i want it to be nullable.
Something like this:
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;
}
But @Column(nullable = true)
throws the NullPointerException
and says subtype can not be null.
Is there any way to get the ManyToOne accept null?
The @ManyToOne
associations are optional by default, so you don't need to set anything if you want them to be nullable.
However, because you set the optional=false
attribute, you made it mandatory.
So instead of:
@ManyToOne(optional = false, fetch = FetchType.LAZY)
Set it like this:
@ManyToOne(fetch = FetchType.LAZY)
The optional
is true
by default.
On the other hand, the @Column(nullable=true)
is to instruct the DDL generation tool to include a NULL
SQL column type constraint.