首页 > 解决方案 > 不是托管类型:com.mycompany.onlineshop.entities.FirstName 类

问题描述

我正在尝试在 userController 类中显示一个自定义对象“FirstName”。基本上我希望它只返回它获得的 customer_id 的名字,但它抛出了一个错误

Caused by: java.lang.IllegalArgumentException: Not a managed type: class com.mycompany.onlineshop.entities.FirstName
    at org.hibernate.metamodel.internal.MetamodelImpl.managedType(MetamodelImpl.java:582) ~[hibernate-core-5.4.27.Final.jar:5.4.27.Final]
    at org.hibernate.metamodel.internal.MetamodelImpl.managedType(MetamodelImpl.java:85) ~[hibernate-core-5.4.27.Final.jar:5.4.27.Final]
    at org.springframework.data.jpa.repository.support.JpaMetamodelEntityInformation.<init>(JpaMetamodelEntityInformation.java:75) ~[spring-data-jpa-2.4.3.jar:2.4.3]
    at org.springframework.data.jpa.repository.support.JpaEntityInformationSupport.getEntityInformation(JpaEntityInformationSupport.java:66) ~[spring-data-jpa-2.4.3.jar:2.4.3]
    at org.springframework.data.jpa.repository.support.JpaRepositoryFactory.getEntityInformation(JpaRepositoryFactory.java:229) ~[spring-data-jpa-2.4.3.jar:2.4.3]
    at org.springframework.data.jpa.repository.support.JpaRepositoryFactory.getTargetRepository(JpaRepositoryFactory.java:179) ~[spring-data-jpa-2.4.3.jar:2.4.3]
    at org.springframework.data.jpa.repository.support.JpaRepositoryFactory.getTargetRepository(JpaRepositoryFactory.java:162) ~[spring-data-jpa-2.4.3.jar:2.4.3]
    at org.springframework.data.jpa.repository.support.JpaRepositoryFactory.getTargetRepository(JpaRepositoryFactory.java:72) ~[spring-data-jpa-2.4.3.jar:2.4.3]
    at org.springframework.data.repository.core.support.RepositoryFactorySupport.getRepository(RepositoryFactorySupport.java:281) ~[spring-data-commons-2.4.3.jar:2.4.3]
    at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.lambda$afterPropertiesSet$6(RepositoryFactoryBeanSupport.java:326) ~[spring-data-commons-2.4.3.jar:2.4.3]
    at org.springframework.data.util.Lazy.getNullable(Lazy.java:230) ~[spring-data-commons-2.4.3.jar:2.4.3]
    at org.springframework.data.util.Lazy.get(Lazy.java:114) ~[spring-data-commons-2.4.3.jar:2.4.3]
    at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.afterPropertiesSet(RepositoryFactoryBeanSupport.java:329) ~[spring-data-commons-2.4.3.jar:2.4.3]
    at org.springframework.data.jpa.repository.support.JpaRepositoryFactoryBean.afterPropertiesSet(JpaRepositoryFactoryBean.java:144) ~[spring-data-jpa-2.4.3.jar:2.4.3]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1847) ~[spring-beans-5.3.3.jar:5.3.3]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1784) ~[spring-beans-5.3.3.jar:5.3.3]
    ... 30 common frames omitted

名字.java

public class FirstName {
    private String firstName;

    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public FirstName(String firstName) {
        this.firstName = firstName;
    }
}

FirstNameRepo.java

@Repository
public interface FirstNameRepo extends JpaRepository<FirstName, Long> {
    @Query("select first_name from users_table where customer_id = ?1")
    FirstName getFirstNameofUser(long customer_id);
}

用户控制器.java

@RestController
@RequestMapping("api/users")
public class UserController {

    @Autowired
    private UserRepo userRepo;

    @Autowired
    private FirstNameRepo firstNameRepo;


    @GetMapping
    public List<User> getAllUsers(){
        return this.userRepo.findAll();
    }

    @GetMapping("/firstName/{id}")
    public FirstName getUserById(@PathVariable(value = "id") long userId){
        return this.firstNameRepo.getFirstNameofUser(userId);
    }
}

我是 Java Springboot 的初学者,如果我错过了什么,请放轻松。我计划向 FirstName 添加更多属性,但为简单起见,我只有名字。

标签: javaspring-bootjpa

解决方案


推荐阅读