Как установить внешний ключ обнуляемый - PullRequest
0 голосов
/ 11 сентября 2018

У меня есть конфигурация класса что-то вроде следующего (просто пример, а не фактическое значение) -

public class payment
{
    @Id
    @Column("payment_id")
    private int paymentId;

    @ManyToOne
    @JoinColumn(name ="")
    private Fine fine;
    //getter setter and other stuff
}

public class Fine{
    @Id
    @Column("fine_id")
    private int fineId;

    @Column("amount")
    private int fineAmount;

    //other stuff
} 

Я получаю org.hibernate.ObjectNotFoundException: No row with the given identifier exists сообщение об ошибке.В соответствии с ответом это потому, что внешний ключ не может иметь значение null, но мой БД содержит null.Я не могу изменить структуру БД или проекта, поэтому есть ли способ, чтобы я мог легально выдать значение null своему внешнему ключу, то есть без создания исключения.

1 Ответ

0 голосов
/ 12 сентября 2018

Использование @Column(nulable = true)

Используется для создания сценариев DDL и не приводит к желаемому поведению.

Вам необходимо пометить @ManyToOne как необязательное.

@ManyToOne(optional = true)
...