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?
Description. This annotation will create a NOT NULL constraint on the column when it shouldn't. The JoinColumn configuration should override the default generated by "optional=false". This is relevant in single table inheritance situations.
The Many-To-One mapping represents a single-valued association where a collection of entities can be associated with the similar entity. Hence, in relational database any more than one row of an entity can refer to the similar rows of another entity.
You need to set:
@ManyToOne(optional = true, fetch = FetchType.LAZY)
not optional=false
.
The @Column(nullable=true)
is to instruct the DDL generation tool to include a NULL
SQL column type constraint.
For more on optional
vs nullable
, check out this StackOverflow answer.
try this:
@JoinColumn(name = "subType_id", nullable = true)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With