2016-05-23 38 views
0

我得到一個stange HQL打印在我的console.I沒有使用任何更新腳本在repository.I創建會話工廠和休眠會話通過Localsession工廠生成器的春天。 我收到我的標準選擇後打印的一個更新查詢。如何跳過更新查詢執行在Hibernate之後的條件選擇

Criteria criteria = session 
       .createCriteria(Test.class); 
     criteria.add(Restrictions.eq("testKey.fode", 
       airlineCode)); 
     criteria.add(Restrictions.eq(
       "testKey.number",eId)); 
     criteria.createAlias("currentMonth", "requiredMonth"); 
     criteria.add(Restrictions.eq("requiredMonth.type", 
       currentMonthType)); 
     statusList = criteria.list(); 

在上面criteria.list()工作正常,但之後針鋒相對更新查詢已經印有大部分列在表中?符號。像下面一樣

update STATUS set CUR_BASE=?, CUR_TYPE=?, CUR_GRP=?, CUR_TOM=?, CHECK_MON=? where FODE=? and CURRENTMONTH=? and E_NUM=?. 

我想知道有什麼辦法可以跳過更新查詢執行。

我的持久性配置:

@Configuration 
@EnableTransactionManagement 
@PropertySource({ "classpath:persistence.properties" }) 
@ComponentScan({ "com.test.test2.*" }) 
public class PersistenceConfiguration1 { 

    @Autowired 
    private Environment env; 

    @Bean(name="dsession") 
    public LocalSessionFactoryBean sessionFactory() { 
     LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean(); 
     sessionFactory.setDataSource(testDataSource()); 
     sessionFactory.setPackagesToScan(new String[] { 
       " com.test.test2"}); 

     return sessionFactory; 
    } 

    @Bean 
    public DataSource testDataSource() { 
     BasicDataSource dataSource = new BasicDataSource(); 
     dataSource.setDriverClassName(env.getProperty("jdbc.driverClassName")); 
     dataSource.setUrl(env.getProperty("jdbc.url")); 
     dataSource.setUsername(env.getProperty("jdbc.user")); 
     dataSource.setPassword(env.getProperty("jdbc.pass")); 

     return dataSource; 
    } 

    @Bean(name="dTransaction") 
    @Autowired 
    public HibernateTransactionManager transactionManager(
      SessionFactory sessionFactory) { 
     HibernateTransactionManager txManager = new HibernateTransactionManager(); 
     txManager.setSessionFactory(sessionFactory); 

     return txManager; 
    } 
} 
+0

提供完整的DAO類(代碼)。 Hibernate不會生成HQL,可能會在代碼中執行更新(事務流)。 – K139

+0

在執行查詢之前,Hibernate會刷新數據庫的所有掛起更改,以確保數據與當前事務保持一致。如果您禁用此功能,則可能會遇到當前事務的不一致數據。 –

回答

0

我發現我code.Thanks @ K139問題指着我分析路徑。

Criteria.list()後,我從DB

statusList = criteria.list(); 
    status = statusList.get(0);\ 
status.setFode(status.getFode.trim) 

設置返回列表中的一些值我從移動存儲庫中的微調功能與其他層的現在工作的罰款。 謝謝