2014-09-08 49 views
6

Mam tabelę, która ma klucz obcy innej tabeli (wiele do jednego relacji), ale chcę, aby był zerowy.Relacja @ManyToOne może być pusta?

coś takiego:

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; 

} 

Ale @Column(nullable = true) rzuca NullPointerException i mówi podtyp nie może być null. Czy istnieje sposób, aby ManyToOne zaakceptować zero?

Odpowiedz

15

trzeba ustawić:

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

optional=false.

Instrukcja @Column(nullable=true) informuje, że generowanie DDL ma zawierać typ kolumny NULL SQL.

Aby uzyskać więcej informacji na temat sprawdzania opcjonalnego lub zerowego this SO answer.

+0

Dzięki! To działa! Czuję się szalony, dlaczego sam tego nie rozumiem! – Narges

3

spróbuj tego:

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