Ich habe 2 Entitäten/Tabellen.
Eine ist eine eigene Einheit, nennen wir sie data
. Sie enthält eine Reihe von Feldern mit sogenannten "mehrsprachigen Codes".
Die zweite Tabelle, code
enthält die mehrsprachigen Werte selbst.
Hier sind einige Beispieldaten:
Data table
id name continentCode countryCode
------------------------------------
1 Toto EU CH
2 Titi AS CN
Code table
id code language text
----------------------------
1 EU EN Europe
2 EU FR Europe
3 EU DE Europa
4 CH EN Switzerland
5 CH FR Suisse
6 CH DE Schweiz
... etc
Ich möchte die Eigenschaften Kontinente, Länder usw. in der Datenentität als Karte abbilden, wie das:
@OneToMany()
@MapKey(name="languageCode")
private Map<String, Code> continents;
Damit ich dann den Text für die richtige Sprache so lesen kann:
Data toto = dao.findByName("Toto");
String text = toto.getContries.get("FR").getText(); //--> returns "Suisse"
String text = toto.getContries.get("EN").getText(); //--> returns "Switzerland"
Ich muss auch in der Lage sein, eine Textsuche nach den Werten dieser "Codes" durchzuführen, und zwar in der Sprache des Benutzers. (z.B. alle Daten, bei denen das Land='suisse' ist, auf Französisch!)
Ist es also möglich, eine OneToMany
Sammlung mit einem Schlüsselfeld, das nicht der Primärschlüssel der aktuellen Entität ist? Ich brauche meine Kontinente Sammlung "alle Datensätze aus der Tabelle Code, wo der Code = der Wert von meinem continentCode
Eigenschaft". Oder gibt es vielleicht einen geeigneteren Weg, um diese Art von Beziehung darzustellen?
NB: Leider kann ich das SQL-Schema nicht ändern...