Hibernate version:
2.1.7
Hallo wertes Forum,
wir nutzen innerhalb einer GIS-Anwendung häufig das Criteria API, u.a. um die komplexen räumlichen Abfragen zu kapseln. Nun is es bei der verwendeten Datenbank so, dass Geometrien als Objektspalten abgelegt werden. Diese werden von uns über UserTypes in passende Java-Objekte "umgewandelt". Einen Punkt gibt es nun aber noch, der zu lösen wäre: Die Objekte liegen immer in eine bestimmten räumlichen Referenzsystem vor, und müssen aber oft in ein anderes umgewandelt werden. Oracle Spatial stellt dafür die Funktion
Code:
sdo_cs.transform
zur Verfügung.
Im Moment verwenden wir entweder HQL-Queries oder createSQLQuery, was dann zB so aussieht:
Code:
Query q = this.getSession().createSQLQuery(
"SELECT " +
"{this}.ID as ID0_, " +
"{this}.NAME as NAME0_, " +
"{this}.DESCRIPTION as DESCRIPT3_0_, " +
"{this}.X_SPACING as X_SPACING0_, " +
"{this}.Y_SPACING as Y_SPACING0_, " +
"{this}.X_COUNT as X_COUNT0_, " +
"{this}.Y_COUNT as Y_COUNT0_, " +
"sdo_cs.transform({this}.LL_POINT, " + sc.getSrs().getSrid() + ") as LL_POINT0_, " +
"sdo_cs.transform({this}.MBB, " + sc.getSrs().getSrid() + ") as MBB0_, " +
"{this}.Z_ORDINATES as Z_ORDIN10_0_ " +
"from Grid {this} WHERE " + se.toSqlString(null, null, null, null) + " ", "this", Grid.class);
Wie zu sehen ist, werden also innerhalb des SELECT-Clause bestimmte Spalten (des Typs SDOGeometry) transformiert. Meine Frage ist nun: kann ich Hibernate so erweitern, dass, wenn als Attribut/Spalten-Klasse eben ein bestimmter Typ identifziert wird, automatisch eine Funktion ergänzt wird?
Vielen Dank & viele Grüsse,
beelzebot