#postgresql #join #spring-data-jpa
Вопрос:
У меня есть две таблицы «Автомобиль» и «Статус». Отношения один к одному Автомобиль имеет-статус
Car Table
Id (PK)
Name
status_id(FK)
Status Table
Id(PK)
status_code
это отношение таково car.status_id=status.id
Сущности
@Entity
class Car{
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Id
Long id;
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "status_id", referencedColumnName = "id", insertable = false, updatable = false)
Status status
@Column(name="status_id")
Integer statusId
..
}
@Entity
class Status{
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Id
private Long id;
private int status_code;
}
Когда я сохраняю объект автомобиля:
Car{ id=null, name="my car", status_id=null, status={id=null, status_code=123}}
repo.saveAndFlush(car)
Данные, которые сохраняются в таблице, являются:
Car
|Id|name|status_id|
|1|mycar|null | <------THIS NULL IS MY ISSUE
(это должно быть обновлено с помощью идентификатора, вставленного в таблицу состояния. как этого добиться ?
Status
|id|status_code|
|1 |123 |
Ответ №1:
Нет необходимости отдельно определять поле StatusID. Просто удалите нижеприведенные строки, и все будет работать так, как ожидалось.
@Column(name="status_id")
Integer statusId
Комментарии:
1. также пришлось удалить вставляемый = false, обновляемый = false. Сработало, спасибо !