Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Can a @ManyToOne JPA relation be null?

Tags:

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?

like image 598
Narges Avatar asked Sep 08 '14 06:09

Narges


People also ask

What is @manytoone optional false?

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.

What is <UNK>Manytoone JPA?

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.


2 Answers

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.

like image 69
Vlad Mihalcea Avatar answered Sep 19 '22 14:09

Vlad Mihalcea


try this:

@JoinColumn(name = "subType_id", nullable = true) 
like image 37
Sarwar kamal Avatar answered Sep 21 '22 14:09

Sarwar kamal