我的Java Spring项目没有找到模型

问题描述 投票:0回答:1

我的项目没有在 UserController 类中创建 UserRepository 组件。

package com.example.diplomAPI;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class DiplomApiApplication {

    public static void main(String[] args) {
        SpringApplication.run(DiplomApiApplication.class, args);
    }
}
package com.example.diplomAPI.model;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Entity
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {

    @Id
    @GeneratedValue
    private int id;

    private String login;

    private String password;
}

package com.example.diplomAPI.controller;

import com.example.diplomAPI.dao.UserRepository;
import lombok.extern.slf4j.Slf4j;
import com.example.diplomAPI.model.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@Slf4j
@RestController
@RequestMapping("/main")
public class UserController {

    UserRepository userRepository;
    @Autowired
    UserController(UserRepository userRepository){
        this.userRepository = userRepository;
    }

    @PostMapping("/registrationUser")
    public String saveUser(@RequestBody User user){
        userRepository.save(user);
        return "User saved";
    }

    @GetMapping("/getAllUsers")
    public List<User> getAllUsers(){
        return userRepository.findAll();
    }

    @GetMapping("/getUserByLogin/{login}")
    public ResponseEntity<User> getUserByLogin(@PathVariable String login){
        return userRepository.findUserByLogin(login)
                .map(user -> ResponseEntity.ok().body(user))
                .orElse(ResponseEntity.notFound().build());
    }
}
package com.example.diplomAPI.dao;

import com.example.diplomAPI.model.User;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

import java.util.Optional;

@Repository
public interface UserRepository extends JpaRepository<User, Integer> {
    Optional<User> findUserByLogin(String login);
}

我的项目结构

com
└── example
    └── diplomAPI
        ├── controller
        │   └── UserController.java
        ├── dao
        │   └── UserRepository.java
        ├── model
        │   └── User.java
        DiplomApiApplication.java

错误代码:

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'userController' defined in file [C:\Users\extre\IdeaProjects\diplomAPI\target\classes\com\example\diplomAPI\controller\UserController.class]: Unsatisfied dependency expressed through constructor parameter 0: Error creating bean with name 'userRepository' defined in com.example.diplomAPI.dao.UserRepository defined in @EnableJpaRepositories declared on DiplomApiApplication: Not a managed type: class com.example.diplomAPI.model.User

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userRepository' defined in com.example.diplomAPI.dao.UserRepository defined in @EnableJpaRepositories declared on DiplomApiApplication: Not a managed type: class com.example.diplomAPI.model.User

Caused by: java.lang.IllegalArgumentException: Not a managed type: class com.example.diplomAPI.model.User
    at org.hibernate.metamodel.model.domain.internal.JpaMetamodelImpl.managedType(JpaMetamodelImpl.java:193) ~[hibernate-core-6.4.1.Final.jar:6.4.1.Final]
    at org.hibernate.metamodel.model.domain.internal.MappingMetamodelImpl.managedType(MappingMetamodelImpl.java:468) ~[hibernate-core-6.4.1.Final.jar:6.4.1.Final]
    at org.hibernate.metamodel.model.domain.internal.MappingMetamodelImpl.managedType(MappingMetamodelImpl.java:98) ~[hibernate-core-6.4.1.Final.jar:6.4.1.Final]

我在互联网上找到的唯一信息是模型应该有一个

@Entity
注释,但我的代码有它。 我还在
@EnableJpaRepositories
类中添加了注释
@EntityScan
DiplomApiApplication
,但错误仍然存在。

java spring jpa
1个回答
0
投票

错误已解决。有必要使用 jakarta 而不是 javax。

© www.soinside.com 2019 - 2024. All rights reserved.