2014-09-08 1 views
6

У меня есть таблица с внешним ключом другой таблицы (отношение много к одному), но я хочу, чтобы она была нулевой.@ManyToOne отношение может быть нулевым?

Что-то вроде этого:

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; 

} 

Но @Column(nullable = true) бросает NullPointerException и говорит подтип не может быть пустым. Есть ли способ получить значение ManyToOne null?

ответ

15

Вы должны установить:

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

не optional=false.

@Column(nullable=true) должен указать генерацию DDL для включения типа столбца NULL SQL.

Для получения дополнительной информации о опциональном контроле с нулевым значением this SO answer.

+0

Спасибо! Оно работает! Я чувствую себя сумасшедшим, почему я не получаю его сам! – Narges

3

попробовать это:

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