2 Stimmen

Mapping berechneter Felder in Hibernate

Ich bin nicht sicher, ob dies in Hibernate möglich ist, aber es wäre wirklich toll, wenn es so wäre :) Ich bin noch nicht über das konzeptionelle Stadium hinausgekommen, aber ich werde es so gut ich kann erklären.

Ich möchte die Funktionen von Oracle Spatial nutzen, um eine auf Nähe basierende Suche durchzuführen. Stellen Sie sich vor, ich habe eine Standort-Entität, die einen Breitengrad/Längengrad-Wert speichert. Dann stelle ich mir vor, dass ich nach allen Orten im Umkreis von 5 km um einen vom Benutzer angegebenen Breitengrad/Längengrad suchen möchte. In den Ergebnissen möchte ich alle übereinstimmenden Orte anzeigen, aber zusätzlich zu den standardmäßigen zugeordneten Feldern der Entität "Ort" möchte ich auch die Entfernung jedes Ortes in Bezug auf den vom Benutzer angegebenen Ort anzeigen.

Mit Oracle Spatial könnte ich dies als berechnetes Feld in SQL tun, aber ich verstehe nicht, wie Hibernate berechnete Felder unterstützen kann, die aus der Datenbank zurückgegeben werden. Da das berechnete Feld keine Spalte in der Tabelle ist, kann ich keine Standardzuordnung vornehmen.

Gibt es spezielle Funktionen, die es mir ermöglichen, Wrapper für POJOs zu erstellen und Hibernate auf sie abzubilden, so dass zusätzliche berechnete Eigenschaften zurückgegeben werden können?

2voto

Chris M. Punkte 21

Ich habe herausgefunden, mit JPA-Annotationen, dass ich einfach eine Eigenschaft auf das zugeordnete Objekt mit dem gleichen Namen wie Ihre berechnete Sql-Feld (z. B. "Entfernung") und kommentieren es als erstellen kann:

@Column(insertable=false, updatable=false)
private Double distance;

Und dies sollte Mapping-Eigenschaft und nicht einen Fehler werfen, wenn Sie versuchen, zurück aus der DB zu speichern.

Bitte beachten Sie, dass die korrekte Anmerkung aktualisierbar ist (nicht aktualisierbar, wie sie ursprünglich veröffentlicht wurde)

1voto

Pascal Thivent Punkte 548176

Haben Sie sich angesehen Hibernate Spatial und seine Oracle10g/11g Anbieter ?

Hibernate Spatial ist eine generische Erweiterung zu Hibernate für die Verarbeitung geografischen Daten. Hibernate Spatial ist quelloffen und lizenziert, wie Hibernate, unter der LGPL-Lizenz lizenziert.

Mit Hibernate Spatial können Sie die mit geografischen Daten in einer standardisierten Weise. Es abstrahiert von der spezifischen Art und Weise, wie Ihre Datenbank geografische Daten unterstützt, und bietet eine standardisierte, datenbankübergreifende Schnittstelle zur Speicherung und Abfrage geografischer Daten Funktionen.

Hibernate Spatial unterstützt die meisten der Funktionen des OGC Simple Feature Spezifikation. Unterstützte Datenbanken sind: Oracle 10g/11g, Postgresql/Postgis und MySQL.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X