I upgraded from spring boot 2.0.6 to 2.1.0, but there was an error as follows:

The method get Hibernate Properties (Hibernate Settings) is undefined for the type JpaProperties

It seems that there is no getHibernateProperties (HibernateSettings) method under the class org.springframework.boot.autoconfigure.orm.jpa.JpaProperties. I looked at https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.1-Release-Notes and it didn't mention any changes to this class here.

Comment From: wilkinsona

getHibernateProperties(HibernateSettings) was removed from JpaProperties in this commit. It isn't mentioned in the release notes as we do not expect code outside of Spring Boot to call that method.

Can you please share the complete stack trace of the failure?

Comment From: fcjxxl

I do not have the stack trace, just code compilation failed.

SpringBoot Undefined method error occurs after upgrading from spring boot 2.0.6 to 2.1.0

Comment From: wilkinsona

You could inject and use HibernateProperties in place of JpaProperties.getHibernateProperties() but I suspect there should be no need to do so. However, I can't see exactly what you're trying to do based on that small snippet of configuration. Can you please take a step back and describe why you are configuring your own LocalContainerEntityManagerFactoryBean?

Comment From: fcjxxl

We have a requirement that each HTTP request needs to access different data sources based on a parameter, such as region, so I configuring my own LocalContainerEntityManagerFactoryBean to achieve this. Code attached.

code.zip

Comment From: wilkinsona

Thanks. So it appears that you do need multiple DataSources and, therefore, that you need to configure your own LocalContainerEntityManagerFactoryBean. You can do so like this with Spring Boot 2.1:

@Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactory(
        EntityManagerFactoryBuilder builder, JpaProperties jpaProperties,
        HibernateProperties hibernateProperties) {
    Map<String, Object> properties = hibernateProperties.determineHibernateProperties(
            jpaProperties.getProperties(), new HibernateSettings());
    return builder.dataSource(dynamicDataSource()).properties(properties)
            .packages("com.openstring.resource.common.entity").build();
}

I've added an entry to the release notes as well.

Comment From: nandeeshnaik

Hi @wilkinsona
Please pardon me for commenting on a closed thread. I have an issue in Springboot migration from 1.5.9 to 2.3.1 related to JdbcTemplates's NativeJdbcExtractor.

I have used your answer to Migrate hibernate code but stuck with JdbcTemplate.

I have linked the StackOverflow Question, https://stackoverflow.com/questions/63055393/springboot-2-3-1-dynamically-update-jdbc-templates-schema-in-multi-tenant-envir?sem=2

It's basically related to the dynamic update of JdbcTemplate's schema based on the REST call.

Is it even possible on Springboot2? Should I get rid of JdbcTemplate? (Need a lot of coding and testing effort) Should I stop migrating?

Please help.