2014-09-08 14 views
6

Ho una tabella che ha una chiave esterna di un'altra tabella (relazione molti a uno) ma voglio che sia nullable.La relazione @ManyToOne può essere nulla?

Qualcosa di simile a questo:

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; 

} 

Ma @Column(nullable = true) tiri il NullPointerException e dice sottotipo non può essere nulla. C'è un modo per far sì che ManyToOne accetti il ​​null?

risposta

15

è necessario impostare:

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

optional=false.

Il @Column(nullable=true) indica alla generazione DDL di includere un tipo di colonna NULL SQL.

Per ulteriori informazioni sul controllo facoltativo e nullable this SO answer.

+0

Grazie! Funziona! Mi sento pazzo perché non lo capisco da solo! – Narges

3

provare questo:

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