jpa 类型jakarta.persistence.实体管理器工厂不存在

d7v8vwbk  于 2022-12-19  发布在  其他
关注(0)|答案(1)|浏览(646)

我正在学习Spring Data并创建一个项目。项目像一个练习列表,用Hibernate将数据保存在MySql中,但它出了点问题,我不知道是什么

我的控制器:

@Controller
public class UserController {
    private final IUserService userService;

    @Autowired
    public UserController(IUserService userService) {
        this.userService = userService;
    }

    @PostMapping(path = "/user/create")
    public ResponseEntity<UserPojo> createUser(@RequestBody User user) {
        UserPojo result = userService.createUser(user);
        return new ResponseEntity<>(result, HttpStatus.OK);
    }

    @GetMapping(path = "/user/{id}")
    public ResponseEntity<UserPojo> getUser(@PathVariable Long id) {
        UserPojo result = userService.getUser(id);
        return new ResponseEntity<>(result, HttpStatus.OK);
    }
}

服务:

@Service
public class UserService implements IUserService {
    @PersistenceContext
    EntityManager entityManager;

    private final Converter converter;

    @Autowired
    public UserService(Converter converter) {
        this.converter = converter;
    }

    @Override
    @Transactional
    public UserPojo createUser(User user) {

        entityManager.persist(user);

        return converter.userToPojo(user);
    }

但是当我在Postman上运行时,我得到了这个-我不知道为什么它会出现:

更多信息:

java.lang.ClassNotFoundException: jakarta.persistence.EntityManagerFactory
    org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1449)
    org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1257)
    java.base/java.lang.Class.forName0(Native Method)
    java.base/java.lang.Class.forName(Class.java:488)
    java.base/java.lang.Class.forName(Class.java:467)
    java.base/sun.reflect.generics.factory.CoreReflectionFactory.makeNamedType(CoreReflectionFactory.java:114)

我的POM和更多代码在这里:
GitHub

mo49yndu

mo49yndu1#

这里有一个奇怪的、不一致的依赖关系混合体

<dependency>
      <groupId>org.hibernate</groupId>
      <artifactId>hibernate-entitymanager</artifactId>
      <version>4.1.9.Final</version>
    </dependency>

    <dependency>
      <groupId>org.hibernate.javax.persistence</groupId>
      <artifactId>hibernate-jpa-2.0-api</artifactId>
      <version>1.0.1.Final</version>
    </dependency>

    <dependency>
      <groupId>org.springframework.data</groupId>
      <artifactId>spring-data-jpa</artifactId>
      <version>3.0.0</version>
    </dependency>

当你使用Spring Data JPA 3.0.0版本时,你应该使用Hibernate 6+。开始时,你不应该指定Hibernate的版本,因为这些版本是在Spring Data JPA pom.xml中指定的。
而且您根本不需要hibernate-jpa-2.0-api

相关问题