Hibernate version: 3
Name and version of the database you are using: Oracle 10g
Hallo,
mein erster Post und gleich eine Frage..
(ich habe das schon in im java forum gepostet bis ich auf dieses
Forum hier gestoßen bin welches mir thematisch doch etwas passender
erscheint :) )
ich migriere derzeit eine altgediente Anwendung von einer Client Applikation
hin zu einer Webanwendung mit Spring MVC und Hibernate. Dazu existiert
eine Oracle Datenbank welche in ihrer Struktur nicht angepasst (wenn nur minimal)
werden soll.
Wir haben verschiedene Benutzer deren Benutzer id in jeder Tabelle
bei jedem Datensatz mit geschrieben wird (feld user_Id). Wir haben eine Tabelle
bezeichnungen und eine Tabelle bezeichnungstexte welche einen dreiteiligen
primärschlüssel hat: bezeichnungs_id, sprache, user_id
Es existiert ein default user (id 1) welchem alle bezeichnungstexte zugeordnet sind.
Dieser default userhält die default bezeichnungstexte. wenn ein user einen eigenen
bezeichnungstext für eine Position erstellt dann soll automatisch dieser verwendet werden
und nicht der default bezeichnungstext.
in hibernate habe ich beispielsweise folgende selects:
Code:
select
p.wert,
p.prozent,
b.text
from
Position p
join p.bezeichnung.bezeichnungstext b (<-- knackpunkt)
where
p.user.id = 213
(nur schematisch / exemplarisch dargestellt)
jetzt möchte ich durch Hibernate Mechanismen, AOP oder sonst
irgendwie den join zum Bezeichnungstext so haben dass er mir
den default bezeichnungstext (user_id = 1) liefert wenn
kein bezeichnungstext mit einer user_id = 213 vorliegt.
überlegungen wären bisher ob wir keine joins mehr nehmen sondern
nur die bezeichnungs-id's und später die resultsets durch eine
methode jagen welche die entsprechenden bezeichnungen aus der
Datenbank holt (wär mir persönlich unrecht, fühlt sich nicht "straight forward" an).
Gibts sowas wie intelligentes Mapping (schwer zu beschreiben) bzw.
konditionales Mapping? Intelligente Stellvertreter Objekte über die ich joine
anstatt die automatisch von Hibernate generierten (eclipse hibernate tools)
und mir diese Bedingung prüfen / abfangen / erfüllen (wenn ja wie)?
schwer zu erklären ich hoffe es wird klar und jemand hat mir hier den
entscheidenden Tip...
bitte um hilfe, alle alternativen gern gesehen!
Grüße,
Pascal