1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Hibernate Interceptor e PostgreSQL application_name

Boa tarde! Eu estou tentando setar o application_name do PostgreSQL a cada sessão do banco aberta pelo hibernate, eu não sei se estou indo no caminho certo, mas estou tentando isso na classe @Configuration:

@Bean
    public LocalContainerEntityManagerFactoryBean entityManagerFactory() throws ClassNotFoundException {
        LocalContainerEntityManagerFactoryBean entityManagerFactoryBean = new LocalContainerEntityManagerFactoryBean();

        entityManagerFactoryBean.setDataSource(dataSource());
        entityManagerFactoryBean.setPackagesToScan("br.com.framework.model");
        entityManagerFactoryBean.setPersistenceProviderClass(HibernatePersistenceProvider.class);
        Properties jpaProperties = new Properties();
        jpaProperties.put("spring.jpa.properties.hibernate.hql.bulk_id_strategy",
                "org.hibernate.hql.spi.id.cte.CteValuesListBulkIdStrategy");
        jpaProperties.put("hibernate.show-sql", "true");//not working
        jpaProperties.put("spring.jpa.show-sql", "true");//not working
        jpaProperties.put("logging.level.org.hibernate.SQL", "debug");//not working
        jpaProperties.put("logging.level.org.hibernate.type.descriptor.sql", "trace");//not working
        jpaProperties.put("hibernate.current_session_context_class", "thread");//don't know exactly what is
        jpaProperties.put("hibernate.ejb.interceptor", hibernateInterceptor());

        entityManagerFactoryBean.setJpaProperties(jpaProperties);

        return entityManagerFactoryBean;
    }

    @Bean
    public EmptyInterceptor hibernateInterceptor() {

        return new EmptyInterceptor() {

            private static final long serialVersionUID = -797444488153472011L;

            @Override
            public String onPrepareStatement(String sql) {
                String sqlWithAppName = "set application_name to '"+Thread.currentThread().getName()+"';";
                return super.onPrepareStatement(sqlWithAppName+sql);
            }

        };
    }

Mas aparentemente o hibernate não aceitar executar as 2 queries de uma vez, da o erro Could not extract result set..

Será que estou indo pelo caminho errado? Há alguma forma melhor de fazer isso?

Qualquer ajuda será apreciada, grato desde já!

  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

0 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags hibernate java banco-de-dados spring ou faça a sua própria pergunta.