Обработка NULL в ассоциациях JPA без FK - PullRequest
0 голосов
/ 06 февраля 2020

MoldBomInfo VO

@OneToOne
@JoinColumn(name = "MACHINE_CODE", insertable = false, updatable = false)
private MachineInfo machineInfo;

MachineInfo VO

public class MachineInfo {
    @Id
    @Column(name="MACHINE_CODE")
    private String machineCode;

    @Column(name="MACHINE_NAME")
    private String machineName;

    @Column(name="STD_LEAD_TIME")
    private int stdLeadTime;

    @Column(name="FACTORY_CODE")
    private String factoryCode;

    @Column(name="MCH_GRP_CODE")
    private String mchGrpCode;

MoldBomInfo TABLE

enter image description here

MachineInfo TABLE

enter image description here

Код ошибки

javax.persistence.EntityNotFoundException: Unable to find e3view.factoryview.main.mold.model.MachineInfo with id 

FK в данный момент не установлен. Мне нужно получить MACHINE_NAME таблицы MachineInfo на основе столбца MACHINE_CODE таблицы MachineBomInfo.

Проблема заключается в том, что MACHINE_CODE может иметь значение NULL в таблице MachineBomInfo. Поэтому при использовании JPA выдается код ошибки.

В настоящее время у меня нет разрешения на управление таблицами.

Как получить желаемый результат через JPA без настройки FK?

1 Ответ

1 голос
/ 06 февраля 2020

В JoinColumn, если вы не предоставите referencedColumnName, по умолчанию column будет ID.

@OneToOne
@JoinColumn(name = "MACHINE_CODE", insertable = false, updatable = false, referencedColumnName = "HERE_YOUR_REF_COLUMN")
private MachineInfo machineInfo;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...