Pytanie jest bardziej o bazy danych, ale wiąże się z javowym Hibernate.
Jestem początkującym użytkownikiem Hibernate i niezbyt zaawansowanym bazodanowcem.
Mamy takie klasy:
public class Foo {
private Long id;
private Map<Bar, String> bars;
}
public class Bar {
private Long id;
}
Oraz takie tabele:
foo:
id | foo_bar_id
bar:
id
foo_bar:
id | bar_id | text
Stworzyłem taką konfigurację:
<class name="Foo" table="foo">
<id name="id" column="id" />
<map name="bars" table="foo_bar">
<key column="id">
<map-key-many-to-many column="bar_id" class="Bar" />
<element column="text" type="text" />
</map>
</class>
Problem polega na tym, że Hibernate joinuje tabele foo i foo_bar zawsze po foo.id, kiedy ja chcę określić kolumnę, po której ma joinować (foo.foo_bar_id). Niestety nie znalazłem takiej opcji. Jest jedynie property-ref, ale to wymagałoby stworzenia dodatkowego, nadmiarowego property w klasie Foo. Takich map jest trochę więcej w tej i kilku innych klasach (kilka tabel zawiera klucze obce do naszego foo_bar). Jak więc najprościej to zrobić?