简体   繁体   English

在 springboot 应用程序 java.lang.IllegalArgumentException 中出现此错误:不是托管类型

[英]getting this error in springboot application java.lang.IllegalArgumentException: Not a managed type

When i run with springboot application i am getting the below error,当我使用 springboot 应用程序运行时,出现以下错误,

Error : Error starting ApplicationContext.错误:启动 ApplicationContext 时出错。 To display the conditions report re-run your application with 'debug' enabled.要显示条件报告,请在启用“调试”的情况下重新运行您的应用程序。 2020-05-21 14:22:24.399 ERROR 2020-05-21 14:22:24.399 错误在此处输入图像描述 55512 --- [ main] osboot.SpringApplication: Application run failed 55512 --- [main] osboot.SpringApplication:应用程序运行失败

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'customerRepository': FactoryBean threw exception on object creation; nested exception is java.lang.IllegalArgumentException: Not a managed type: class com.example.Model.Customer
    at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:178) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]
    at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.getObjectFromFactoryBean(FactoryBeanRegistrySupport.java:101) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]
    at org.springframework.beans.factory.support.AbstractBeanFactory.getObjectForBeanInstance(AbstractBeanFactory.java:1821) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.getObjectForBeanInstance(AbstractAutowireCapableBeanFactory.java:1266) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:260) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType(DefaultListableBeanFactory.java:623) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType(DefaultListableBeanFactory.java:611) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]
    at org.springframework.data.repository.config.DeferredRepositoryInitializationListener.onApplicationEvent(DeferredRepositoryInitializationListener.java:51) ~[spring-data-commons-2.3.0.RELEASE.jar:2.3.0.RELEASE]
    at org.springframework.data.repository.config.DeferredRepositoryInitializationListener.onApplicationEvent(DeferredRepositoryInitializationListener.java:36) ~[spring-data-commons-2.3.0.RELEASE.jar:2.3.0.RELEASE]
    at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:172) ~[spring-context-5.2.6.RELEASE.jar:5.2.6.RELEASE]
    at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:165) ~[spring-context-5.2.6.RELEASE.jar:5.2.6.RELEASE]
    at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:139) ~[spring-context-5.2.6.RELEASE.jar:5.2.6.RELEASE]
    at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:403) ~[spring-context-5.2.6.RELEASE.jar:5.2.6.RELEASE]
    at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:360) ~[spring-context-5.2.6.RELEASE.jar:5.2.6.RELEASE]
    at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:897) ~[spring-context-5.2.6.RELEASE.jar:5.2.6.RELEASE]
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:553) ~[spring-context-5.2.6.RELEASE.jar:5.2.6.RELEASE]
    at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:143) ~[spring-boot-2.3.0.RELEASE.jar:2.3.0.RELEASE]
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:758) [spring-boot-2.3.0.RELEASE.jar:2.3.0.RELEASE]
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:750) [spring-boot-2.3.0.RELEASE.jar:2.3.0.RELEASE]
    at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:397) [spring-boot-2.3.0.RELEASE.jar:2.3.0.RELEASE]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:315) [spring-boot-2.3.0.RELEASE.jar:2.3.0.RELEASE]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1237) [spring-boot-2.3.0.RELEASE.jar:2.3.0.RELEASE]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1226) [spring-boot-2.3.0.RELEASE.jar:2.3.0.RELEASE]
    at com.example.demo.DemoApplication.main(DemoApplication.java:10) [classes/:na]
Caused by: java.lang.IllegalArgumentException: Not a managed type: class com.example.Model.Customer
    at org.hibernate.metamodel.internal.MetamodelImpl.managedType(MetamodelImpl.java:582) ~[hibernate-core-5.4.15.Final.jar:5.4.15.Final]
    at org.hibernate.metamodel.internal.MetamodelImpl.managedType(MetamodelImpl.java:85) ~[hibernate-core-5.4.15.Final.jar:5.4.15.Final]
    at org.springframework.data.jpa.repository.support.JpaMetamodelEntityInformation.<init>(JpaMetamodelEntityInformation.java:75) ~[spring-data-jpa-2.3.0.RELEASE.jar:2.3.0.RELEASE]
    at org.springframework.data.jpa.repository.support.JpaEntityInformationSupport.getEntityInformation(JpaEntityInformationSupport.java:66) ~[spring-data-jpa-2.3.0.RELEASE.jar:2.3.0.RELEASE]
    at org.springframework.data.jpa.repository.support.JpaRepositoryFactory.getEntityInformation(JpaRepositoryFactory.java:229) ~[spring-data-jpa-2.3.0.RELEASE.jar:2.3.0.RELEASE]
    at org.springframework.data.jpa.repository.support.JpaRepositoryFactory.getTargetRepository(JpaRepositoryFactory.java:179) ~[spring-data-jpa-2.3.0.RELEASE.jar:2.3.0.RELEASE]
    at org.springframework.data.jpa.repository.support.JpaRepositoryFactory.getTargetRepository(JpaRepositoryFactory.java:162) ~[spring-data-jpa-2.3.0.RELEASE.jar:2.3.0.RELEASE]
    at org.springframework.data.jpa.repository.support.JpaRepositoryFactory.getTargetRepository(JpaRepositoryFactory.java:72) ~[spring-data-jpa-2.3.0.RELEASE.jar:2.3.0.RELEASE]
    at org.springframework.data.repository.core.support.RepositoryFactorySupport.getRepository(RepositoryFactorySupport.java:309) ~[spring-data-commons-2.3.0.RELEASE.jar:2.3.0.RELEASE]
    at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.lambda$afterPropertiesSet$5(RepositoryFactoryBeanSupport.java:297) ~[spring-data-commons-2.3.0.RELEASE.jar:2.3.0.RELEASE]
    at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport$$Lambda$569.000000001410C340.get(Unknown Source) ~[na:na]
    at org.springframework.data.util.Lazy.getNullable(Lazy.java:212) ~[spring-data-commons-2.3.0.RELEASE.jar:2.3.0.RELEASE]
    at org.springframework.data.util.Lazy.get(Lazy.java:94) ~[spring-data-commons-2.3.0.RELEASE.jar:2.3.0.RELEASE]
    at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.getObject(RepositoryFactoryBeanSupport.java:244) ~[spring-data-commons-2.3.0.RELEASE.jar:2.3.0.RELEASE]
    at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.getObject(RepositoryFactoryBeanSupport.java:57) ~[spring-data-commons-2.3.0.RELEASE.jar:2.3.0.RELEASE]
    at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:171) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]
    ... 24 common frames omitted

My respostiry class:我的呼吸系统 class:

@Repository
public interface CustomerRepository extends JpaRepository<Customer,Long>{

}

My model class:我的 model class:

@Entity
@Table(name="customer")
public class Customer implements Serializable{
    private static final long serialVersionUID = -2343243243242432341L;
    @Id
    @GeneratedValue(strategy=GenerationType.TABLE)
private long id;
    @Override
    public String toString() {
        return "Customer [id=" + id + ", source=" + source + ", type=" + type + ", customername=" + customername
                + ", company=" + company + ", customeremail=" + customeremail + ", customernumber=" + customernumber
                + ", address=" + address + ", postcode=" + postcode + ", postoffice=" + postoffice + "]";
    }
    public long getId() {
        return id;
    }
    public void setId(long id) {
        this.id = id;
    }
    public String getSource() {
        return source;
    }
    public void setSource(String source) {
        this.source = source;
    }
    public String getType() {
        return type;
    }
    public void setType(String type) {
        this.type = type;
    }
    public String getCustomername() {
        return customername;
    }
    public void setCustomername(String customername) {
        this.customername = customername;
    }
    public String getCompany() {
        return company;
    }
    public void setCompany(String company) {
        this.company = company;
    }
    public String getCustomeremail() {
        return customeremail;
    }
    public void setCustomeremail(String customeremail) {
        this.customeremail = customeremail;
    }
    public long getCustomernumber() {
        return customernumber;
    }
    public void setCustomernumber(long customernumber) {
        this.customernumber = customernumber;
    }
    public String getAddress() {
        return address;
    }
    public void setAddress(String address) {
        this.address = address;
    }
    public String getPostcode() {
        return postcode;
    }
    public void setPostcode(String postcode) {
        this.postcode = postcode;
    }
    public String getPostoffice() {
        return postoffice;
    }
    public void setPostoffice(String postoffice) {
        this.postoffice = postoffice;
    }
    @Column(name="source")
private String source;
    @Column(name="type")
private String type;
    @Column(name="customername")
private String customername;
    @Column(name="company")
private String company;
    @Column(name="customeremail")
private String customeremail;
    @Column(name="customernumber")
private long customernumber;
    @Column(name="address")
private String address;
    @Column(name="postcode")
private String postcode;
    @Column(name="postoffice")
private String postoffice;
}

My controller class:我的 controller class:

@Configuration
@Controller
@EntityScan
@ComponentScan("com.example.demo.CustomerRepository")
@EnableAutoConfiguration
public class CustomerController {
@Autowired
private CustomerRepository rep;

    @RequestMapping("/search/{id}")
    public void search(@PathVariable long id)
    {
        String cust_res=rep.findById(id).toString();
        System.out.println("search response ... "+cust_res);
    }
}

Can you please help me to resolve this issue at earliest.???你能帮我尽快解决这个问题吗????

use Long as id instead of primitive long使用Long作为 id 而不是原始long

Suggestion: if possible use @GeneratedValue(strategy=GenerationType.IDENTITY) instead of GenerationType.TABLE https://vladmihalcea.com/why-you-should-never-use-the-table-identifier-generator-with-jpa-and-hibernate/建议:如果可能,请使用@GeneratedValue(strategy=GenerationType.IDENTITY)而不是GenerationType.TABLE https://vladmihalcea.com/why-you-should-never-use-the-table-identifier-generator-with-jpa-and -休眠/

You are getting error - Not a managed type: class com.example.Model.Customer .您收到错误 - Not a managed type: class com.example.Model.Customer Application is not able to pick entities and manage them.应用程序无法选择实体并管理它们。

Resolution - Provide path of entities to @EntityScan as below:解决方案- 提供到@EntityScan的实体路径,如下所示:

@Configuration
@Controller
@EntityScan("com.example.Model")
@ComponentScan("com.example.demo.CustomerRepository")
@EnableAutoConfiguration
public class CustomerController

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 java.lang.IllegalArgumentException:不是托管类型:class - java.lang.IllegalArgumentException: Not a managed type: class java.lang.IllegalArgumentException:不是托管类型:classTestEntity - java.lang.IllegalArgumentException: Not an managed type: classTestEntity java.lang.IllegalArgumentException问题:不是托管类型 - Problem with java.lang.IllegalArgumentException: Not a managed type java.lang.IllegalArgumentException:不是托管类型: - java.lang.IllegalArgumentException: Not a managed type: 获取错误 java.lang.IllegalArgumentException - Getting error java.lang.IllegalArgumentException 春季-AWS(无春季启动):java.lang.IllegalArgumentException:不是托管类型 - Spring - AWS (no spring boot): java.lang.IllegalArgumentException: Not a managed type java.lang.IllegalArgumentException:在Spring Boot应用程序中不是托管类型 - java.lang.IllegalArgumentException: Not a managed type in spring boot app spring-data-solr java.lang.IllegalArgumentException:不是托管类型 - spring-data-solr java.lang.IllegalArgumentException: Not a managed type java.lang.IllegalArgumentException:不是托管类型 - Spring Boot 中的多个数据库 - java.lang.IllegalArgumentException: Not a managed type - Multiple Databases in Spring Boot Spring Boot 异常“java.lang.IllegalArgumentException:不是托管类型:” - Spring Boot exception "java.lang.IllegalArgumentException: Not a managed type:"
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM