У меня есть агрегат, который имеет отношение один к одному, а на втором уровне дочерняя сущность имеет отношение один ко многим (Список).В настоящее время, когда объект сохраняется, он делает то, что ожидается, и сохраняет его в порядке.Но когда я пытаюсь получить сущность из базы данных, генерируемый SQL-код неверен, что приводит к ошибке.Я не могу сказать, что мне здесь не хватает, любая помощь будет принята с благодарностью.Я использую Lombok, spring-data-jdbc и spring-boot.Может, Ломбоку есть чем заняться, но я не могу сказать.Вот код, иллюстрирующий то, о чем я говорю: интерфейс
public interface ChargeRepository extends CrudRepository<Charge, Long> {
}
сущности
@Data
@AllArgsConstructor
@NoArgsConstructor
@JsonIgnoreProperties(ignoreUnknown = true)
public class Charge {
@Id
private Long id;
private Double someData;
private Summary summary;
}
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Summary {
@Id
private Long id;
private Double otherData;
private List<Multiplier> details = new ArrayList<>();
}
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Multiplier {
@Id
private Long id;
private Double detailData;
}
вот DDL
CREATE TABLE CHARGE(
ID BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
SOME_DATA DOUBLE(2) NOT NULL,
PRIMARY KEY(ID)
);
CREATE TABLE SUMMARY(
ID BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
OTHER_DATA DOUBLE(2) NOT NULL,
CHARGE BIGINT UNSIGNED NOT NULL,
PRIMARY KEY(ID)
);
CREATE TABLE Multiplier(
ID BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
DETAIL_DATA DOUBLE(2) NOT NULL,
SUMMARY BIGINT UNSIGNED NOT NULL,
SUMMARY_KEY INTEGER NOT NULL,
PRIMARY KEY(ID)
);
Проблемав том, что когда я сохраняю новую сущность, она работает нормально, но когда я пытаюсь извлечь ее из базы данных, сгенерированный sql создает соединение между таблицами со столбцом «детали», который существует в сущности, но, очевидно, не является частью таблицы,Это ошибка, которую я получаю
PreparedStatementCallback;неверная грамматика SQL [ВЫБРАТЬ charge.id AS id, charge.some_data AS some_data, summary.id AS summary_id, summary.other_data AS summary_other_data, summary.details AS summary_details ОТ начисления СЛЕДУЕТ ВНЕШНЕЕ СОЕДИНЕНИЕ Сводка AS сводка НА сводку.charge = charge.id ГДЕ charge.id =?];вложенное исключение - org.h2.jdbc.JdbcSQLException: столбец \ "SUMMARY.DETAILS \" не найден \ nКолонна \ "SUMMARY.DETAILS \" не найдена;Оператор SQL: \ nSELECT charge.id Идентификатор AS, charge.some_data AS some_data, summary.id AS summary_id, summary.other_data AS summary_other_data, summary.details AS summary_details ОТ заряда СЛЕДУЮЩИЙ ВНЕШНИЙ ОБЪЕДИНИТЬ сводный отчет AS Summary ON summary.charge = charge.idГДЕ обвинения.ид =?
Чего мне здесь не хватает?РЕДАКТИРОВАТЬ: Забыл добавить, если список находится в корневом агрегате, он работает нормально.