如何显示Hql查询中涉及的实际值?

时间:2018-01-18 10:25:46

标签: spring hibernate spring-mvc

我将应用程序配置为显示sql查询:

@Configuration
@ComponentScan("com.ambre.pta")
@EnableTransactionManagement
@PropertySources({
    @PropertySource("classpath:jdbc.properties"),
    @PropertySource("classpath:fr/global.properties"),
    @PropertySource("classpath:fr/main.properties"),
    @PropertySource("classpath:fr/admin.properties")

})
public class ApplicationContextConfig {

    ...

    @Autowired
    @Bean(name = "sessionFactory")
    public SessionFactory getSessionFactory(DataSource dataSource) {

        LocalSessionFactoryBuilder sessionBuilder = new LocalSessionFactoryBuilder(dataSource);

        sessionBuilder.scanPackages("com.ambre.pta.model");
        sessionBuilder.setProperty("hibernate.show_sql", "true");
        sessionBuilder.setProperty("hibernate.dialect", "org.hibernate.dialect.Oracle10gDialect");

        return sessionBuilder.buildSessionFactory();

    }

    ...

}

但是在运行时,查询中涉及的实际值未显示,而只有?符号!那么如何启用实际值的显示?

1 个答案:

答案 0 :(得分:0)

您必须将类别org.hibernate.SQL的记录器设置为调试,并将org.hibernate.type设置为跟踪。

E.g。如果使用log4j,请在配置中添加以下两行:

# SQL statements and parameters
log4j.logger.org.hibernate.SQL=debug
log4j.logger.org.hibernate.type.descriptor.sql=trace