2014-09-08 16 views
6

Ich habe eine Tabelle, die Fremdschlüssel einer anderen Tabelle hat (viele zu einer Beziehung), aber ich will, dass es Nullable sein kann.@ManyToOne Beziehung kann null sein?

Etwas wie folgt aus:

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; 

} 

Aber @Column(nullable = true) führt den NullPointerException und sagt Subtyp nicht null sein kann. Gibt es eine Möglichkeit, die ManyToOne akzeptieren null?

Antwort

15

Sie müssen eingestellt werden:

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

nicht optional=false.

Der @Column(nullable=true) soll die DDL-Generierung anweisen, einen NULL-SQL-Spaltentyp einzuschließen.

Für weitere Informationen zu optional vs Nullwertprüfung this SO answer.

+0

Dank! Es klappt! Ich bin verrückt, warum ich es nicht selbst bekomme! – Narges

3

versuchen Sie dies:

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