Using Hibernate 6.x with Spring Boot 2.7.x not working?

ghz 1years ago ⋅ 8782 views

Question

I am trying to use Hibernate Core 6.x with Spring Boot / Spring Data JPA 2.7.x project, but it's not able to pick up Hibernate 6.x classes.

As you can see in the [pom](https://github.com/ramshers/spring- boot-2.7.x-hibernate-6.x/blob/master/pom.xml), in spring-boot-starter-data-jpa I have excluded hibernate-core 5.6.10-final and added 6.x as project dependency.

But I am seeing below error:

***************************
APPLICATION FAILED TO START
***************************

Description:

A component required a bean of type 'javax.persistence.EntityManagerFactory' that could not be found.


Action:

Consider defining a bean of type 'javax.persistence.EntityManagerFactory' in your configuration.

I don't think spring boot is autoconfiguring the new Hibernate 6.x version.

For 5.6.x, I could see below 11 implementations for EntityManager.

enter image description
here

On moving to 6.x, I see only one implementation. enter image description
here

What's going on, I have no idea. Can some one pitch in and help resolve this issue.

Why I want 6.x -> [See if RIGHT JOIN work in 6.x](https://github.com/ramshers/spring- boot-2.7.x-hibernate-6.x/blob/master/src/main/java/com/demo/MyRunner.java#L24). Even other wise I see it's going to be a good task to figure out and make this combo work.


Answer

Hibernate 6 uses the JPA version (JPA 3) that uses the jakarta.persistence package names introduced in JakartaEE 9. Spring Boot 2.x still uses the javax.* package namespace of JakartaEE 8 and earlier (JPA 2.2 and earlier), and thus only supports Hibernate 5.x (for Spring Boot 2.7, Hibernate 5.6.x is the default).

Spring Boot 3 switched to the jakarta.* packages of JakartaEE 9+. So, you can upgrade to Spring Boot 3 to able to use Hibernate 6. If you cannot upgrade Spring Boot yet, you'll need to use Hibernate 5.6.