-->
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.  [ 2 posts ] 
Author Message
 Post subject: Caching-"Problem" in Hibernate?!
PostPosted: Tue Feb 09, 2010 4:34 am 
Newbie

Joined: Tue Feb 09, 2010 4:15 am
Posts: 2
Hallo,

leider habe ich dieses Forum etwas zu spät entdeckt und deshalb erst mal in ein anderes Forum gepostet. da ich denke, dass es hier besser aufgehoben ist, will ich euch aber auch noch fragen.

Ich habe in meiner Web-Anwendung Hibernate im Einsatz. Nun habe ich das Problem, dass ein Query, je nach Parameter, anders aussieht.

Wenn z.B. Parameter 1 = null ist, dann soll Query 1 verwendet werden, wenn Parameter 1 != null ist, dann soll das Query 2 verwendet werden.
Hibernate verwendet aber partout query 1.

Hier mal der Code, mit dem ich mir die Session hole:

Code:
Code:
public class DBFactory {
   
    private static String HIBERNATE_CONFIG = "nbw_umweltpraemienrechner_hibernate.cfg.xml";
    private static SessionFactory factory= new Configuration().configure(HIBERNATE_CONFIG).buildSessionFactory();

    public static Session getInstance() {     
        return factory.openSession();       
    }

    public static void closeSession(Session s) {
        s.close();
    }
}


Hier der Code meiner DAO:

Code:
Code:
    public double getNumber(String param1, String param2) throws NoResultException {

        String q= null;
        String param1 = param1;
        String param2 = param2;

        Number number = null;

        if (param2.equals("value2")) {
            param2 = null;
        }

        q = "FROM Number no WHERE no.param1 = :param1 ";
       
        double result = 0.0;
       
        if(param2!= null) {
            q += " AND no.param2 = :param2";
        }
       
        try {
           
            Query query = getSession().createQuery(queryString);
            query.setParameter("param1", param1);
            if(param2 != null)
                   query.setParameter("param2", param2);

            number = (Number) query.uniqueResult();
        } catch (Exception e) {
             throw new NoResultException("Blubb");
        }

        result = Number.getSum();

        return result;
    }


Wenn ich nun debugge und param2 ist value2, dann ist q auch schon vor der if-Abfrage if(param2 != null) FROM Number no WHERE no.param1 = aram1 AND no.param2 = aram2.

Warum ist das denn so? Kann mir da jmd. helfen?

Vielleicht liegt es am Caching der hibernate.cfg.xml?

Code:
Code:
      <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
      <property name="hibernate.connection.url">DB</property>
      <property name="hibernate.connection.username">User</property>
      <property name="hibernate.connection.password">PW</property>
      <property name="hibernate.connection.pool_size">10</property>
      <property name="show_sql">true</property>
      <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
      <property name="hibernate.hbm2ddl.auto">update</property>
      <property name="hibernate.cache.use_query_cache">false</property>
      <property name="hibernate.cache.use_second_level_cache">false</property>


Alle anderen Queries funktionieren einwandfrei - aber da ändert sich auch am Query nichts. Wenn ich im Debug über mein Programm laufe, so verhält es sich allgemein sehr komisch: Ich frage vorab nämlich z.B. auch ab, ob an der möglichen null-Stelle null vorliegt und will dann komplett in eine andere Methode gehen - was aber nicht gemacht wird. Ich habe das Gefühl, als würden Code-Stücke einfach ignoriert werden...

Hängt das irgendwie mit dem Caching von Hibernate zusammen oder kann das auch an meinem Tomcat vielleicht liegen?

Kann mir da vielleicht jemand helfen?

Vielen Dank und viele Grüße,

Dirk


Top
 Profile  
 
 Post subject: Re: Caching-"Problem" in Hibernate?!
PostPosted: Tue Feb 09, 2010 10:17 am 
Newbie

Joined: Tue Feb 09, 2010 4:15 am
Posts: 2
Ok, das Problem hat sich erledigt. Das Neuaufsetzen des Projekt-Workspaces und löschen des Tomcat aus Eclipse brachte den Erfolg und alles hat wieder funktioniert, nachdem ich das Projekt erneut ausgecheckt habe.

Viele Grüße,

Dirk


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