-->
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.  [ 6 posts ] 
Author Message
 Post subject: Abbrechen einer Select-Abfrage
PostPosted: Fri Jan 26, 2007 9:46 am 
Newbie

Joined: Fri Jan 26, 2007 9:31 am
Posts: 2
Hallo,

ich habe ein ähnliches Problem, wie Balko10 in diesem Thread:
http://forum.hibernate.org/viewtopic.php?t=969527

Ich erzeuge im Laufe meines Java Programmes eine SELECT Abfrage mit createCritera() und anschließendem list()!
Da die Suchabfrage aber einige Zeit dauern kann, will ich dem Benutzer eine Möglichkeite geben, die Abfrage mit Hilfe eines Beenden-Button zu beenden!

Ich habe aber noch keinen Weg gefunden, denn Session.canelQuery() scheint nicht zu funktionieren (auch nicht mit Session.close()).

In dem Post von Balko10 wurde, geantwortet, dass man den Thread bekommen muss und ihn zerstören sollte (obwohl dort auch auf evtl. Gefahren hingewiesen wird...). Jetzt habe ich aber leider keine Ahnung, wie ich den Thread bekommen kann...

Kennt jemand eine Möglichkeit, wie ich ein SELECT beenden kann?? Im Moment wird das SELECT nur dann beendet, wenn ich den Tomcat Server stoppe!!

Niko

P.S: Die verwendete Hibernate Version ist auch bei mit 3.2.1. Java wird in Version 1.5.10 verwendet!


Top
 Profile  
 
 Post subject: Session - Thread
PostPosted: Fri Jan 26, 2007 12:32 pm 
Beginner
Beginner

Joined: Thu Nov 23, 2006 5:09 am
Posts: 21
Quote:
Ich erzeuge im Laufe meines Java Programmes eine SELECT Abfrage mit createCritera() und anschließendem list()!
Da die Suchabfrage aber einige Zeit dauern kann, will ich dem Benutzer eine Möglichkeite geben, die Abfrage mit Hilfe eines Beenden-Button zu beenden!

Ich habe aber noch keinen Weg gefunden, denn Session.canelQuery() scheint nicht zu funktionieren (auch nicht mit Session.close()).



Hmmm... hast Du denn Deine GUI in nem separaten Thread von der Businesslogik?
Sonst wartet die doch eh auf die 'Rückkehr' Deines Statements....

Der Tipp geht dahin, dass Du den Aufruf deiner Abfrage in einen eigenen Thread (Lesetipp: java.lang.Thread) packst. Dieser läuft dann quasi paralell zu Deinem übrigen Programm. Will der Benutzer abbrechen kannst Du diesen einzelnen Thread stoppen ohne Server oder Programm beenden zu müssen.
Das ist die schöne Variante....


Theoretisch (ohne es versucht zu haben) könnte auch
Code:
session.getConnection().close()
klappen.
Das wäre dann die derbe Variante....


Last edited by oliverT on Fri Jan 26, 2007 12:51 pm, edited 1 time in total.

Top
 Profile  
 
 Post subject: Session - Thread
PostPosted: Fri Jan 26, 2007 12:33 pm 
Beginner
Beginner

Joined: Thu Nov 23, 2006 5:09 am
Posts: 21
accidential double posting removerd


Top
 Profile  
 
 Post subject:
PostPosted: Mon Jan 29, 2007 5:33 am 
Expert
Expert

Joined: Tue Nov 23, 2004 7:00 pm
Posts: 570
Location: mostly Frankfurt Germany
Hast Du geprüft, ob der Datenbanktreiber bzw. die Datenbank das unterstützt?

_________________
Best Regards
Sebastian
---
Training for Hibernate and Java Persistence
Tutorials for Hibernate, Spring, EJB, JSF...
eBook: Hibernate 3 - DeveloperGuide
Paper book: Hibernate 3 - Das Praxisbuch
http://www.laliluna.de


Top
 Profile  
 
 Post subject: Noch kein Erfolg
PostPosted: Tue Jan 30, 2007 5:47 am 
Newbie

Joined: Fri Jan 26, 2007 9:31 am
Posts: 2
Hi,

ich habe jetzt mal die Version mit
Code:
session.connection().close();
versucht (session.getConnection() gibt es nicht - zumindest bei mir - deshalb gehe ich davon aus, dass connection() gemeint war). Allerdings führte diese Version zu keienm Erfolg.
Der Code läuft zwar problemlos durch, der Thread läuft aber weiterhin und ist in top auffindbar. Ich verwende zur Verwaltung der Session die Hibernate Klasse SessionFactory und speichere diese Sessions dann anschließend per ThreadLocal static Objekt.

Ob die Datenbanktreiber das Verhalten unterstüzen kann ich schlecht sagen. Die Funktion session.connection.getHoldaibility() klingt mir für dieses Zweck ganz brauchbar, allerdings bekomme ich beim Aufruf der Fuktion eine SQLException mit "Funktion nicht implementiert". Wie kann ich denn genau ermitteln, ob das meine DB unterstüzt?
Zur Info: Die darunterliegende DB ist Oracle 9.2.

Niko


Top
 Profile  
 
 Post subject:
PostPosted: Tue Jan 30, 2007 2:58 pm 
Expert
Expert

Joined: Tue Nov 23, 2004 7:00 pm
Posts: 570
Location: mostly Frankfurt Germany
Teste es mit JDBC, übergebe einem zweiten Thread die connection und lasse diesen die Query abbrechen.

_________________
Best Regards
Sebastian
---
Training for Hibernate and Java Persistence
Tutorials for Hibernate, Spring, EJB, JSF...
eBook: Hibernate 3 - DeveloperGuide
Paper book: Hibernate 3 - Das Praxisbuch
http://www.laliluna.de


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 6 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.