Hibernate hql suche Date

Status
Nicht offen für weitere Antworten.

DreamArtist

Bekanntes Mitglied
Halloliebe Javaner,

ich habe gleich mal ein zweites Problem, diesmal mit Hibenate.


Der Benutzer kann als Suchkriterium ein Datum eingeben.
Mit diesem String möchte ich nun ein Query auf meiner Oracle machen.

Beispiel:

Code:
private KAPat sucheAufnahmen(KAPat patient, Date von, Date bis, String bearbKz){
		Set idTeile = patient.getKaIdTeil();
		Set idT2 = new HashSet();
		Iterator idTeileIterator = idTeile.iterator();
		Expression ex = null;

		String datumVon = Datum.convertDate2String(
				von,
				Datum.TT_MM_JJJJ,
				Datum.TRENNER_PUNKT,
				Datum.TRENNER_PUNKT);
		String datumBis = Datum.convertDate2String(
				bis,
				Datum.TT_MM_JJJJ,
				Datum.TRENNER_PUNKT,
				Datum.TRENNER_PUNKT);
		String hql2 = "from KAK01Aufn ";
		boolean erster = true;
		
		while(idTeileIterator.hasNext()){
			KAIDTeil teil = (KAIDTeil)idTeileIterator.next();		
			
			if(erster){				
				erster=false;
				hql2 += " where ( ";
			}
			else{
				hql2 += " OR (";
			}
			hql2+= " kaIdTeil=" + teil.getId().longValue();
			if(von != null){
				hql2 += " AND aufnDat >= '" 
					+ datumVon + "' ";
			}
			if(bis!= null){
				hql2 += " AND aufnDat <= '" + datumBis + "'";
			} 
			if(bearbKz!=null){
				hql2 += ") ";
			}
			else{
				hql2 +=" AND bearbKz='" + bearbKz + "') ";
			} 
			if(bearbKz!=null){
				hql2 += ") ";
			}
			else{
				hql2 +=" AND bearbKz='" + bearbKz + "') ";
			}
			
		}//Ende der iteration der IDTeile
		hql2 += " ORDER by aufnDat";
		Iterator it1 = super.find(hql2).iterator();	
	}

Natürlich bekomme ich jetzt den Fehler das JJJJ-MM-TT ein ungültiges Format für Oracle ist.
Meine Testfälle verwenden jedoch dieses Format und Hibernate soll ja so portierbar sein.

Habe es auch schon mittels

Code:
Criteria criteria = session.createCriteria(KAK01Aufn.class);
if (startDate != null) {
	criteria.add(Expression.ge("aufnDat",von);
}
if (endDate != null) {
	criteria.add(Expression.le("aufnDat",bis);
}
List results = criteria.list();

versucht, bekomme dann aber bei dem Query das Date im Query als das toString() Date.

Kann mir jemand sagen wie ich das Query aufbauen muss?

Vielen Dank DreamArtist
 

KSG9|sebastian

Top Contributor
dieses Stringgefrickel ist total unübersichtlich, verwende mal den StringBuffer(1.4) respektive StringBuilder (1.5)

Hibernate hat doch nen eigenen Datums-Typ, oder?
 

DreamArtist

Bekanntes Mitglied
String -> Stringbuilder --> Ja eh, aber ne dumme angewohnheit :oops:
Java 1.5 wir bei uns noch nicht verwendet.


zurück zum thema:

Es gibt nur die Klasse CalendarDateType von Hibernate. Und diese wird als rückgabewert verwendet.
Zumindest ist dies die einzige Klasse die ich in der Hibernate-Api finden konnte
 

HLX

Top Contributor
Sollte Hibernate nicht die Konvertierung des Datums ins DB-spezifische Format übernehmen? Man kann einer Query jedenfalls als Parameter den Datentyp java.util.Date übergeben.

Also: nicht dem Framework die Arbeit abnehmen :wink:
 

DreamArtist

Bekanntes Mitglied
HLX hat gesagt.:
Man kann einer Query jedenfalls als Parameter den Datentyp java.util.Date übergeben.

Also: nicht dem Framework die Arbeit abnehmen :wink:

Mach ich bei

Code:
 Criteria criteria = session.createCriteria(KAK01Aufn.class);
if (startDate != null) {
   criteria.add(Expression.ge("aufnDat",von);
}
if (endDate != null) {
   criteria.add(Expression.le("aufnDat",bis);
}
List results = criteria.list();

jedoch wird dann wie erwähnt nur die toString() Methode der Klasse Date aufgerufen und diese hat in keinen Fall eine SQL taugliches Format
 

HLX

Top Contributor
Hibernate kann nach verschiedenen Sprachen und Formaten der Datenbanken unterscheiden. Wie das genau funktioniert weiß ich auch nicht. Man kann jedenfalls irgendwo einen Datenbanktyp bzw. einen Dialekt angeben. Schau mal ins Package org.hibernate.dialect.
 

AlArenal

Top Contributor
HLX hat gesagt.:
Hibernate kann nach verschiedenen Sprachen und Formaten der Datenbanken unterscheiden. Wie das genau funktioniert weiß ich auch nicht. Man kann jedenfalls irgendwo einen Datenbanktyp bzw. einen Dialekt angeben. Schau mal ins Package org.hibernate.dialect.

Hat aber mit HQL nichts zu tun, schließlich soll Hibernate von der DB abstrahieren. Nur wer ganz mutig ist, kann auch natives SQL verwenden.
 

DreamArtist

Bekanntes Mitglied
Habe nun einen Weg gefunden:

Hier der Code dazu:

Code:
String hql2 = "from KAIDTeil as kaIdTeil where kaIdTeil.kaPat.vsnr='" + vsnr + "' ";
		if(von != null){
			hql2 += " AND kaIdTeil.aufnDat >= ? ";
		}
		if(bis!= null){
			hql2 += " AND kaIdTeil.aufnDat <= ?";
		}			
		if(bearbKz!=null && !bearbKz.equals("")){
			hql2 += " AND kaIdTeil.kaK01Aufn.bearbKz='" + bearbKz + "' ";
		}			
		if(aufenthaltString!=null && !aufenthaltString.equals("")){
			hql2 += " AND kaIdTeil.kaK01Aufn.kenn_s_a='" + aufenthaltString + "' ";
		}	
		hql2 += " ORDER by kaIdTeil.aufnDat";
		Query query = getSession().createQuery(hql2);
		if(von != null){
			query.setDate(0, von); 
		}
		if(bis!=null){
			if(von!=null){
				query.setDate(1, bis); 
			}
			else{
				query.setDate(0, bis); 
			}
		}
		return query.list();

Und ja, ich sollte einen StringBuffer verwenden :wink:
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
R Java EE 6, eclipse, maven, jsf, hibernate, mysql Allgemeines EE 8
O Hibernate Fehlermeldung bei start des Servers Allgemeines EE 2
E Frage zu Wildfly und Hibernate OGM Allgemeines EE 0
S Frage zu Jersey + Hibernate Allgemeines EE 1
D GWT mit Hibernate und Sql Datenbank Allgemeines EE 2
B Wicket, Hibernate, H2 memDB Anfänger Frage Allgemeines EE 2
H Hibernate - OneToMany - mappedBy reference an unknown target entity property Allgemeines EE 1
A Hibernate endlich zu Laufen bekommen... Allgemeines EE 11
A Erste Schritte... Problem mit Hibernate Allgemeines EE 15
LadyMilka Ablaufdiagramm mit/ohne Hibernate Allgemeines EE 2
P Mit JAXB erzeugte Klassen persistieren (Hibernate) Allgemeines EE 10
K Anfänger: Hibernate + Web Allgemeines EE 2
T Hibernate 3 + EJB 3 + JBoss 5 Allgemeines EE 6
G Persistenz mit Hibernate oder J2EE? Allgemeines EE 11
C Hibernate - Expression.or Allgemeines EE 4
D Erst Spring oder erst Hibernate lernen? Allgemeines EE 2
D Java EE vs. Spring/Hibernate Allgemeines EE 26
Y myFaces und Hibernate Session Handling Allgemeines EE 7
W Speicher-Problem bei WebApp unter Tomcat, Struts, Hibernate Allgemeines EE 3
byte Remote Lazy Loading mit Spring und Hibernate Allgemeines EE 5
G JSF, Hibernate, Spring --> Struktur Allgemeines EE 2
F [Hallo] Frage zu Hibernate Mapping und Vererbung Allgemeines EE 3
G JSF | Hibernate | MySQL Allgemeines EE 17
G Hibernate: org.hibernate.TransactionException Allgemeines EE 4
F org.hibernate.LazyInitializationException: failed to lazily Allgemeines EE 8
J nur bestimmte Mapping-Dateien berücksichtigen (Hibernate) Allgemeines EE 14
S Hibernate EJB3 Allgemeines EE 2
E JBoss Hibernate Datenbank-Timeout Allgemeines EE 3
S Hibernate, Tomcat und Eclipse treiben mich zum Wahnsinn. Allgemeines EE 2
2 hibernate - createQuery() Allgemeines EE 9
T Hibernate die richtige Wahl? Allgemeines EE 2
M JSF mit Hibernate Allgemeines EE 14
W Hibernate *.Jar's im Klassenpfad Allgemeines EE 10
M Tomcat, Hibernate, MySQL und die EOFException Allgemeines EE 7
C EntityManager wirft NullpointerException: JBoss-Hibernate Allgemeines EE 4
E JSF, Hibernate & MySQL: Keine Datenbankaktualisierung Allgemeines EE 5
M mit Hibernate 1:n in view richtige implementieren Allgemeines EE 3
M Hibernate Criteria frage Allgemeines EE 2
A Speicherproblem bei Webanwendung mit Hibernate und Stuts Allgemeines EE 6
A Hibernate-Problem mit MySQL-Cluster Allgemeines EE 6
S Fragen zu: Servlets, Struts & Hibernate Allgemeines EE 9
E JOINS und Hibernate? Allgemeines EE 3
S Hibernate Mapping Problem Allgemeines EE 3
S Hibernate INSERT Problem Allgemeines EE 11
S Java Enum in MySQL und Hibernate Allgemeines EE 3
R Hibernate: many-to-many funktioniert noch nicht ganz Allgemeines EE 2
B JSF + Hibernate How2 Allgemeines EE 2
G [JSF+Hibernate]: DB-Constraints in Validierungsphase? Allgemeines EE 4
P struts Hibernate MySQL Select Statement Allgemeines EE 24
G JTA ja/nein & wie (JBoss & Hibernate & Transakti Allgemeines EE 3
T Hibernate & Logging in Log4J Allgemeines EE 4
T JSTL + Struts (inkl.Hibernate) -> forEach Problem Allgemeines EE 6
G Persistenz-Entscheidung (Entity Beans, Hibernate, JDBC) Allgemeines EE 12
S Hibernate 2.x mit Eclipse 2.1 Allgemeines EE 16
B Suche funktionierende pom.xml Allgemeines EE 5
G Suche "billigen" WebServer Allgemeines EE 24
H Suche dynamische Ajax-Tabelle Allgemeines EE 2
T Suche Buch für: Large Scale Web-Apps | Clustering | Scaling in Java ? Allgemeines EE 4
G Suche mit Suchwort realisieren Allgemeines EE 2
S Suche gutes JSF(Java Server Faces)-Tutorial Allgemeines EE 2
G Suche Tutorials/Bücher - J2EE Allgemeines EE 5
R auf der Suche nach dem Fehler,Sessions + Arrays Allgemeines EE 4
P Suche free Webanwendung zu testen Last, Performance Allgemeines EE 3
G suche Hilfe beim TreeView Servlet Allgemeines EE 8
R SUCHE: log4j.properties - Hilfsprogramm zum Erstellen Allgemeines EE 2
T Suche Framework Allgemeines EE 5
L Anfänger: suche Tutorials zu Struts/EJB Allgemeines EE 6
C Suche JSP Gästebuch Allgemeines EE 4
G suche einfaches login Allgemeines EE 9
D suche kreditkartenprüfung Allgemeines EE 4

Ähnliche Java Themen

Neue Themen


Oben