Zdravím,
neví někdo jak na ternární asociaci v Hibernate/JPA (používám anotace)?
Mám tuto situaci; eviduju filmy a u nich lidi, kteří se podíleli na jeho tvorbě (tzn. režiséři, scénáristi, herci... nazývám jako "role"). Každý film může mít více lidí stejné role, každý člověk může mít více rolí, každý člověk může být u více filmů.
V databázi to vypadá takto:
Movie (MOVIE_ID, released, runtime, ...);
People (PEOPLE_ID, name, ...);
Movie_people (MOVIE_ID, PEOPLE_ID, role); UNIQUE (MOVIE_ID, PEOPLE_ID, role);
Role je v Hibernate jako Enum. (Nevím, jak synchronizovat Enum v aplikaci s číselníkovou tabulkou či enumem v DB (a nehci to definovat zvlášť na dvou místech), takže momentálně to mám tak, že role je v DB jen číselná hodnota, není FK. Mimochodem, kdyby někdo znal lepší řešení, tak určitě vítám, z databázového pohledu se mi tohle nelíbí.)
Chtěl bych to namapovat nějak takto:
Map<Role, Set<People>> people
Role je Enum type, People doménová třída (@Entity).
Cílem je, abych mohl jednoduše zavolat:
Collection<People> getPeople(Role role);
addPeople(Role role, Collection<People> people);
Už jsem strávil několik hodin hledání, našel jsem i stejný problém v několika diskuzích, ale nikdo to nedokázal vyřešit (ale zatím nikdo nevyloučil, by to nešlo...).