JPA один к одному присоединяется к колонке @Id. Объединенный столбец не обновляется в справочной таблице

#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. Сработало, спасибо !