Загрузка родителя из дочернего элемента в отношении @OneToManyJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Загрузка родителя из дочернего элемента в отношении @OneToMany

Сообщение Anonymous »


У меня есть сущность Transaction, которая имеет несколько частных TransactionLeg. Я запускаю запрос, который возвращает список ветвей (не транзакций), и затем я хочу получить родительский элемент. В некоторых случаях это не удается, как описано ниже. Есть идеи, что я делаю не так?

@Entity публичная финальная транзакция класса расширяет DomainObjectImpl { .. @OneToMany(mappedBy = "транзакция", cascade = CascadeType.ALL, fetch = FetchType.EAGER) @OrderColumn(name = "ИНДЕКС") @PrivateOwned частные ноги List; .. Чтобы устранить проблему, я создал этот специальный метод загрузки: (Как только я пойму проблему, я хочу от нее избавиться)

публичная транзакция getTransactionForLeg(TransactionLeg transactionLeg) { Транзакция транзакция = транзакцияLeg.getTransaction(); если (транзакция == ноль) { если (transactionLeg.getUuid() == null) { // искусственная транзакцияLeg вернуть ноль; } транзакция = getTransactionForLegUuid(transactionLeg.getUuid()); если (транзакция == ноль) { throw new RuntimeException("Транзакция не может быть загружена для этапа с uuid=" +transactionLeg.getUuid()); } } если (transaction.getLegs().size() == 0) { System.out.println("Транзакция не имеет ветвей" + транзакции.getUuid()); транзакция = getTransactionForLegUuid(transactionLeg.getUuid()); } если (transaction.getLegs().size() == 0) { System.out.println("Транзакция по-прежнему не имеет ветвей после перезагрузки" + транзакции.getUuid()); entityManager.getEntityManagerFactory().getCache().evict(Transaction.class, транзакция); транзакция = getTransactionForLegUuid(transactionLeg.getUuid()); } если (transaction.getLegs().size() == 0) { System.out.println("Транзакция по-прежнему не имеет продолжения после выселения " + транзакции.getUuid()); for (нога TransactionLeg: транзакции.getLegs()) { System.out.println("leg: " + leg.toString()); } } если (transaction.getLegs().size() == 0) { System.out.println("Транзакция по-прежнему не имеет ветвей после цикла " + транзакции.getUuid()); } обратная сделка; } публичная транзакция getTransactionForLegUuid (String transactionLegUuid) { BooleanExpression expr = QTransaction.transaction.legs.any().uuid.eq(transactionLegUuid); вернуть транзакциюRepository.findOne(expr); } Обычно первая транзакция Transaction =transactionLeg.getTransaction(); просто работает. Редко, у меня пока нет точных цифр, но один из тысячи терпит неудачу в журнале отладки ниже. По сути, связь между сущностями кажется разорванной.
[2023-12-07 23:05:11] [info] Транзакция не имеет ветвей 744e7cbb-9cff-4961-bd76-fc2d74c85b0c [2023-12-07 23:05:11] [информация] Транзакция по-прежнему не имеет ног после перезагрузки 744e7cbb-9cff-4961-bd76-fc2d74c85b0c [2023-12-07 23:05:11] [информация] Транзакция все еще не имеет ног после выселения 744e7cbb-9cff-4961-bd76-fc2d74c85b0c [2023-12-07 23:05:11] [информация] Транзакция все еще не имеет ног после цикла 744e7cbb-9cff-4961-bd76-fc2d74c85b0c
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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