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.
On moving to 6.x, I see only one implementation.
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.