-->
These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 1 post ] 
Author Message
 Post subject: union-subclass mit Nicht-Standard-Datenbank
PostPosted: Fri Oct 28, 2005 10:23 am 
Newbie

Joined: Fri Jul 23, 2004 5:52 am
Posts: 2
Location: Berlin, Germany
Hibernate version: 3.0.5
Name and version of the database: Pervasive.SQL 7

Liebe Spezialisten!
Wir wollen/müssen Hibernate mit einer SQL-Datenbank verwenden, die eine nicht standard-konforme Syntax für SELECT ... UNION ... erwartet.
Unsere Hibernate-Mappings enthalten ein union-subclass Mapping, das von Hibernate wie folgt übersetzt wird (der Übersicht halber gekürzt und wichtige Schlüsselwörter groß geschrieben):

Code:
SELECT abstractsa0_.AuftrNr as AuftrNr0_, abstractsa0_.VK_Stelle as VK2_13_0_, ..., abstractsa0_.clazz_ as clazz_0_
FROM ( SELECT Anrede, KndCode, Zusatz, ..., 1 as clazz_ FROM Auftragskopf UNION SELECT Anrede, KndCode, Zusatz, ..., 2 as clazz_ FROM ImpKopf )
abstractsa0_ WHERE abstractsa0_.AuftrNr=?


Pervasive 7 erlaubt leider keine UNION-subselects, so dass wir die WHERE-Klausel in jedem UNION-Select wiederholen müssten. Das Statement müsste für Pervasive in etwa so aussehen:

Code:
SELECT AuftrNr as AuftrNr0_, VK_Stelle as VK2_13_0_, ..., 1 as clazz_
FROM Auftragskopf ak1 WHERE ak1.AuftrNr=?
UNION SELECT AuftrNr, VK_Stelle, ..., 2 as clazz_ FROM ImpKopf ak2 WHERE ak2.AuftrNr=?


In den Hibernate-Sourcen haben wir gesehen, dass die SQL-Statements an verschiedenen Stellen zusammen gesetzt werden. Das Prinzip ist jedoch immer das gleiche: Es wird eine org.hibernate.sql.Select Instanz erzeugt und mit Werten gefüllt, die der Persister liefert (in unserem Fall org.hibernate.persister.entity.UnionSubclassEntityPersister).

Um die Struktur der Statements zu beeinflussen, müssten wir an allen Stellen, an denen ein SELECT-Statement von Hibernate gebaut wird, eingreifen und außerdem die Parameterzuweisung abfangen, um jeden Parameterwert in jedes an der UNION beteiligte SELECT einzutragen.
Gibt es vielleicht noch einen anderen Punkt in Hibernate, an dem wir ansetzen könnten, um unser Problem zu lösen?

Zur Info: Wir haben bereits viele Möglichkeiten zur Umgehung des Problems ausprobiert aber keine Alternative gefunden (z.B. alternative Mappings, ein spezieller Persister, Erzeugung eines Views in der Datenbank etc.). Außerdem haben wir auch keine Möglichkeit, Pervasive durch eine vernünftige SQL-Datenbank zu ersetzen, weil eine alte Anwendung auf Pervasive 7 angewiesen ist.

Danke!

_________________
Frank


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 1 post ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.