-->
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.  [ 4 posts ] 
Author Message
 Post subject: Schwieriges Query?
PostPosted: Tue Nov 20, 2007 11:55 am 
Newbie

Joined: Tue Oct 23, 2007 5:02 pm
Posts: 5
Hi,

ich krieg das einfach nicht hin,
ich habe eine Tabelle die verschiedene Versionen von Datensätzen enthält, ähnlich dem Prinzip eines Versionskontrollsystems, das sieht ungefähr so aus:

Objekt1_id Objekt1_Version_1 Objekt1_andere Daten
Objekt2_id Objekt2_Version_1 Objekt2_andere Daten
Objekt3_id Objekt3_Version_1 Objekt3_andere Daten
Objekt1_id Objekt1_Version_2 Objekt1_andere Daten
Objekt2_id Objekt2_Version_2 Objekt2_andere Daten
Objekt1_id Objekt1_Version_3 Objekt1_andere Daten

Innerhalb einer Abfrage möchte ich nun einfach von jedem Objekttyp
die höchste Version bekommen, also ein Select ...
->
Objekt1_id Objekt1_Version_3 Objekt1_andere Daten
Objekt2_id Objekt2_Version_2 Objekt2_andere Daten
Objekt3_id Objekt3_Version_1 Objekt3_andere Daten

Ich hätte gerne eine Lösung mit Hilfe der Hibernate-Criteria API.
Leider finde ich nicht mal den Ansatz.

Ich denke mal, es sollte irgendwie mit Projections gehen, aber ich kriegs wie gesagt nicht hin.

Bin für jede Hilfe sehr dankbar.


Top
 Profile  
 
 Post subject:
PostPosted: Tue Nov 20, 2007 3:14 pm 
Beginner
Beginner

Joined: Thu Jan 04, 2007 5:44 am
Posts: 26
Location: Innsbruck - Sivas(TR) - Bregenz
hab die frage nicht ganz verstanden.. aber projections in der criteriaAPI findest du hier

http://www.hibernate.org/hib_docs/reference/en/html/querycriteria.html

zb ein group by würde dann so aussehen


Code:
List results = session.createCriteria(Cat.class)
    .setProjection( Projections.groupProperty("color").as("colr") )
    .addOrder( Order.asc("colr") )
    .list();


Top
 Profile  
 
 Post subject:
PostPosted: Wed Nov 21, 2007 3:23 am 
Newbie

Joined: Tue Oct 23, 2007 5:02 pm
Posts: 5
Hi,

danke, mit der CriteriaAPI bin ich soweit schon vertraut, nur leider übersteigt die Anwendung dieser Anfrage meinen Horizont.
Prinzipiell möchte ich folgendes

die tabelle sieht im Prinzip so aus:
------------------------------------------------------------------------------------------------
ID Aktuelle_Revision beliebige Attribute (unwichtig)
------------------------------------------------------------------------------------------------
- Objekt1_id - Objekt1_revision_1 - irgendwelche anderen attribute
- Objekt2_id - Objekt2_revision_1 - irgendwelche anderen attribute
- Objekt3_id - Objekt3_revision_1 - irgendwelche anderen attribute
- Objekt1_id - Objekt1_revision_2 - irgendwelche anderen attribute
- Objekt2_id - Objekt2_revision_2 - irgendwelche anderen attribute
- Objekt1_id - Objekt1_revision_3 - irgendwelche anderen attribute

Jedes Mal wenn ich ein Objekt speicher wird die aktuelle Revision hochgezählt, man sieht hier also, dass Objekt_1 bereits 3x geändert worden sein muss, da es mittlerweile in Revision 3 gespeichert ist.
PrimaryKey ist hierbei die Objekt_ID zusammen mit der aktuellen Revision_Nummer.

Was ich jetzt will ist im Prinzip eine Anzeige aller aktuellen Objekte in der Datenbank, aber hierbei natürlich nur die aktuellen Revisions, also bei Objekt_1 die 3. Revision, bei Objekt_2 die 2. Revision und bei Objekt_3 die 1. Revision.

Danke für euer Hilfe

Gruß

Martin


Top
 Profile  
 
 Post subject: Verständnissfrage...
PostPosted: Fri Nov 23, 2007 11:55 am 
Beginner
Beginner

Joined: Thu Nov 23, 2006 5:09 am
Posts: 21
Ohne jetzt motzen zu wollen, nur damit das für alle die Tipps geben wollen klar ist:

Du hast Dein Datenmodell nicht irgendwie NORMALISIERT oder so?!

Sprich die Objekte sowie ihre Versionen sowie mögliche andere Dateien sind in einer einzigen Tabelle und jetzt brauchst Du ne Suche welche quasi ein

GROUP BY datei

zusammen mit nem

HAVING MAX(version)

macht?!


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

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.