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;
}
}
提供完整的DAO類(代碼)。 Hibernate不會生成HQL,可能會在代碼中執行更新(事務流)。 – K139
在執行查詢之前,Hibernate會刷新數據庫的所有掛起更改,以確保數據與當前事務保持一致。如果您禁用此功能,則可能會遇到當前事務的不一致數據。 –