我在我的控制台中打印了一个stange HQL。我没有在repository中使用任何更新脚本。我正在通过Spring的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 :(得分:0)
我在代码中发现了这个问题。感谢@ K139指点我分析路径。
Criteria.list()
之后我在DB
statusList = criteria.list();
status = statusList.get(0);\
status.setFode(status.getFode.trim)
我将trim功能从存储库移动到其他层,现在工作正常。 感谢