近日老領(lǐng)導(dǎo)讓我看看之前的系統(tǒng)不能登陸了,,我查了查卡在了hibernate查詢Session.CreateQuery(hql)那里,,直接跳到finally內(nèi),,連catch都沒(méi)進(jìn)去,,感覺(jué)很奇怪,,于是問(wèn)了問(wèn)度娘,,發(fā)現(xiàn)一則是在配置文件內(nèi)添加一個(gè)屬性節(jié)點(diǎn),。 我這項(xiàng)目是SSH搭建的,spring和hibernate配合著,。經(jīng)斷點(diǎn)測(cè)試當(dāng)走到 Begin后面的那句createQuery時(shí)直接跳入finally,并沒(méi)有到End那句也沒(méi)有被catch捕獲。 如下代碼示例: - try {
- session = getSession();
- System.out.println("Begin");
- query = session.createQuery(hql.toString());
- System.out.println("End");
- query.setInteger(0, tuser.getUserId());
- query.setInteger(1, tuser.getUserId());
- list = query.list();
- return list;
- } catch (Exception e) {
- e.printStackTrace();
- return null;
- }finally {
- session.close();
- }
解決方案:Spring+Hibernate開(kāi)發(fā)
- <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
- <span style="white-space:pre"> </span><property name="dataSource">
- <ref bean="dataSource" />
- </property>
- <property name="hibernateProperties">
- <props>
- <span style="white-space:pre"> </span><prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
- <prop key="hibernate.show_sql">true</prop>
- <prop key="hibernate.format_sql">true</prop>
- <prop key="hibernate.query.factory_class">org.hibernate.hql.classic.ClassicQueryTranslatorFactory</prop>
- </props>
- </property>
加入<prop key="hibernate.query.factory_class">org.hibernate.hql.classic.ClassicQueryTranslatorFactory</prop> 節(jié)點(diǎn)如果只是hibernate配置文件需要加入
- <property name="hibernate.query.factory_class">org.hibernate.hql.classic.ClassicQueryTranslatorFactory</property>
最后補(bǔ)充一下,,還有一種情況就是如果你用的IDE是MyEclipse8.6 請(qǐng)檢查一下lib下是否多出來(lái)個(gè)antlr-2.7.2.jar 包,,如果有了它也會(huì)出現(xiàn)此情況所以要把它消滅掉。
|