如何获取JPA生成的SQL查询?

Ido*_*ash 14 jpa spring-data-jpa

我使用JPA规范和Hibernate作为我的供应商.我需要以某种方式将生成的SQL Query发送到DB(打印到sysout)并将其保存为一个简单的字符串.

有没有办法做到这一点?

编辑

让我更清楚一点:我不需要休眠日志.我需要能够在不同的DB上执行相同的查询.因此,我需要按原样获取SQL查询,并将其保存在普通的String变量中.

编辑2

是否有一个util我可以提供一个bean,它会自动生成一个Insert查询?我能以某种方式在这里使用Hibernate bean吗?我知道这是一个复杂的节拍.

谢谢,

Idob

Jad*_*lao 14

像这样创建一个bean.

@Bean
public JpaVendorAdapter jpaVendorAdapter(){
    HibernateJpaVendorAdapter jpaVendorAdapter = new HibernateJpaVendorAdapter();
    jpaVendorAdapter.setGenerateDdl(true);
    jpaVendorAdapter.setShowSql(true);

    return jpaVendorAdapter;
}
Run Code Online (Sandbox Code Playgroud)

如果您正在使用Spring Boot,请将其添加到@Configuration的某个位置.

由此创建的日志可在MySQL工作台中执行.您声明您正在使用JPA和Hibernate.除非您支持的数据库受JPA支持,否则没有其他办法.在这种情况下,您可以实现AbstractJpaVendorAdapter.