Hibernate dodatkowe zapytania

0

Hej, chciałem zapytać o rozwiązanie problemu z dodatkowymi zapytaniami.

Mam 2 encję które są połączone w bazie danych inną kolumną niż id. W poniższym przykładzie połączenie jest xyz z name.

Class A:
id
@OneToMany(mappedBy="xyz")
string name

Class B:
id
@ManyToOne
@JoinColumn(name="xyz", referencedColumnName="name")
A xyz

Tutaj jest problem, jeżeli Od razu pobieram wszystkie rzeczy z A wraz z B tzw. join fetch, criteria, entity graph nie ważne, to zawsze mam dodatkowa zapytania o xyz, mimo że z logów sql wynika że nie potrzeba tego robić (dobrze dodawany jest inner join itd.). Jeżeli w bazie danych dodam dodatkową kolumnę z id (klasa B) i połączę te 2 encję normalnie przez to właśnie id, to dodatkowe zapytania już nie lecą. Nie mam pojęcia jak to wyeliminować.

1

@trojanus: ogarnij się, rzucasz jakieś randomowe wskazówki. @JoinTable nie ma na to żadnego wpływu (tutaj nawet nie ma dodatkowej tabeli pośredniczącej), a Lazy fetching raczej przyniesie odwrotny efekt od zamierzonego.

@brus97 tak na logikę, jeśli masz mapowanie 1-N, to nie uważasz ze w encji powinna być lista? :)

3

@Charles_Ray: no właśnie @Shalom ma rację, Lista to jest zły wybór do hajbernejta w jakiś 99% przypadków

2

Zamiast męczyć się z błędami adnotacyjnymi, po prostu niech class B zawiera w sobie Long aId, a class A nie zawiera w sobie niczego. Niech będzie jakieś repository (nieważne czy Spring CRUD repo, czy Twoje własne), które będzie miało metodę Set<classB> findAllByAId(Long aId)

Wtedy żadne adnotacje nie są potrzebne, jedynie ważne żebyś miał foreign keya na bazie w tej kolumnie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1