Код: Выделить всё
@NamedEntityGraph(
name = "expense-for-frontend",
attributeNodes = {
@NamedAttributeNode("shipment"),
})
@Entity
public class Expense {
...
@ManyToOne(fetch = FetchType.LAZY, optional = true)
private Shipment shipment;
...
}
Код: Выделить всё
@EntityGraph("expense-for-frontend")
@Query(
"""
SELECT e
FROM Expense e
LEFT JOIN Shipment s ON e.shipment.id = s.id
WHERE (:status IS NULL OR e.status = :status)
""")
List
findAllFilteredShipmentExpensesWithPayment(
@Param("status") @Nullable VendorPaymentStatus status);
Код: Выделить всё
select eb1_0.id, ...
from expense eb1_0
join shipment s1_0 on s1_0.id=eb1_0.shipment_id
left join shipment sb1_0 on sb1_0.tenant_id = ? and eb1_0.shipment_id=sb1_0.id
...
Я не могу найти способ изменить EntityGraph, чтобы разрешить необязательную связь ManyToOne.
- Я не хочу удалять @NamedAttributeNode("shipment") из EntityGraph, потому что это приводит к дополнительному обращению базы данных туда и обратно для каждой строки расходов, а их много.
- Я не могу найти способ настроить NamedAttributeNode, чтобы указать ему создавать левое соединение.
Подробнее здесь: https://stackoverflow.com/questions/790 ... lationship
Мобильная версия