Хранение внуков (косвенных, транзитивных) в postgres с использованием данных Spring jdbcJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Хранение внуков (косвенных, транзитивных) в postgres с использованием данных Spring jdbc

Сообщение Anonymous »

У меня возникли проблемы с получением (но не сохранением) дочерних объектов с использованием данных Spring jdbc. Другими словами, корневой агрегат имеет дочерний объект, который, в свою очередь, имеет список дочерних объектов. Сохранение данных работает нормально — все связи отображаются в базе данных правильно заполненными. Однако я не могу правильно загрузить список дочерних объектов. Вот структура объекта:

Код: Выделить всё

@Data
public class Quote {
@Id
Long id;

QuoteResponse response;
}

@Data
public class QuoteResponse {
@Id
Long quoteResponseId;

@MappedCollection(idColumn = "quote_response")
public List itemQuoteResponses = new ArrayList();
}

@Data
public class ItemQuoteResponse {

@Id
Long id;
}

А вот таблицы

Код: Выделить всё

CREATE TABLE quote (
id BIGSERIAL PRIMARY KEY NOT NULL,
}
CREATE TABLE quote_response (
quote_response_id BIGSERIAL PRIMARY KEY NOT NULL,
quote int not null
);

CREATE TABLE item_quote_response (
id BIGSERIAL PRIMARY KEY,
quote_response int not null,
FOREIGN KEY (quote_response) REFERENCES quote_response(quote_response_id),
quote_response_key INTEGER NOT NULL
);
Я использую простой CrudRepository для получения и сохранения цитаты. Меня сбивает с толку то, что данные Spring jdbc правильно хранят Quote, QuoteResponse и ItemQuoteResponse, и все внешние ключи правильно заполняются, но когда я пытаюсь получить цитату, ItemQuoteResponses не извлекаются, и вместо этого я получаю пустой список.< /p>
Более запутанными являются журналы отладки:

Код: Выделить всё

2024-09-13T15:38:05.372-04:00 DEBUG 25076 --- [dev] [nio-8080-exec-4] o.s.jdbc.core.JdbcTemplate               : Executing prepared SQL statement [SELECT
"item_quote_response"."id" AS "id", "item_quote_response"."status" AS "status",
"item_quote_response"."quote_response_key" AS "quote_response_key" FROM
"item_quote_response" WHERE "item_quote_response"."id" = ? ORDER BY "quote_response_key"]
Он пытается использовать item_quote_response.id для поиска дочерних элементов, тогда как следует использовать item_quote_response.quote_response (внешний ключ его родителя).
Кажется, я не могу найти никакой документации, обсуждающей этот тип отношений в данных Spring jdbc, или если я нарушаю какое-то соглашение об именах, которое выполняет автоконфигурацию.


Подробнее здесь: https://stackoverflow.com/questions/789 ... -data-jdbc
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»