#java #spring #hibernate
#java #весна #спящий режим
Вопрос:
Существует множество родительских таблиц и БЛОК дочерних таблиц. Теперь я хочу, чтобы LOT -> lot_id был внешним ключом для таблицы БЛОКОВ. и есть два вызова API, которые я делаю, чтобы ПОЛУЧИТЬ / ОПУБЛИКОВАТЬ для ЛОТА и БЛОКА.
api / park /lots и api / park /blocks
Когда я создаю запись для БЛОКА (api / park / blocks), она создается. Но когда я вызываю api GET (api / park / lots) через LOT, я не могу получить дочернюю (БЛОКОВУЮ) запись
Ниже приведен пример json
{ «lot_id»: «1001», «name»: «NEWLOT»,
"parkingBlocks": [],
"availability": {
"available_spots": 50,
"occupied_spots": 2,
"unknown_spots": 0,
"competitors": 0
}
}
Хотя у меня есть блок идентификатора «2001» для партии «1001» в запросе GET, который невозможно получить
Объект LOT code
@Id частная строка lot_id; имя частной строки = «»;
@OneToMany(targetEntity = ParkingBlock.class,cascade = CascadeType.ALL, orphanRemoval = true)
private List<ParkingBlock> parkingBlocks = new ArrayList<>();
Сущность БЛОКА
@Id
частная строка block_id блока;
//THIS IS THE FOREIGN KEY I CREATED MANUALLY
@OneToOne(targetEntity = ParkingLot.class, cascade = CascadeType.ALL, optional = false)
@JoinColumn(name = "lot_id")
private String lot_id;
@ManyToOne(targetEntity = ParkingLot.class, cascade = CascadeType.ALL, optional = false)
private ParkingLot parkingLot;
//accessors
code
Идентификатор лота не сохраняется в базе данных
Ответ №1:
Подумайте о том, чтобы сделать это:
- Добавьте @JoinColumn в отношения в other, чтобы ORM знал, как можно выполнить соединение между таблицами.
- Чтобы сохранить обе таблицы, попробуйте установить в каждом экземпляре БЛОКА экземпляр LOT, чтобы ORM обнаружил, что обе сущности связаны, и сначала вставил LOT, а затем использовал идентификатор LOT, используемый в БЛОЧНОЙ сущности