简体   繁体   English

org.hibernate.InstantiationException:没有实体的默认构造函数::principal.Cliente

[英]org.hibernate.InstantiationException: No default constructor for entity: : principal.Cliente

I'm having this error:我有这个错误:

Exception in thread "main" org.hibernate.InstantiationException: No default constructor for entity:  : principal.Cliente
   at org.hibernate.tuple.PojoInstantiator.instantiate(PojoInstantiator.java:120)
   at org.hibernate.tuple.PojoInstantiator.instantiate(PojoInstantiator.java:136)
   at org.hibernate.tuple.entity.AbstractEntityTuplizer.instantiate(AbstractEntityTuplizer.java:737)
   at org.hibernate.persister.entity.AbstractEntityPersister.instantiate(AbstractEntityPersister.java:4755)
   at org.hibernate.internal.SessionImpl.instantiate(SessionImpl.java:1387)
   at org.hibernate.internal.SessionImpl.instantiate(SessionImpl.java:1375)
   at org.hibernate.loader.plan.exec.process.internal.EntityReferenceInitializerImpl.hydrateEntityState(EntityReferenceInitializerImpl.java:235)
   at org.hibernate.loader.plan.exec.process.internal.AbstractRowReader.readRow(AbstractRowReader.java:107)
   at org.hibernate.loader.plan.exec.internal.EntityLoadQueryDetails$EntityLoaderRowReader.readRow(EntityLoadQueryDetails.java:255)
   at org.hibernate.loader.plan.exec.process.internal.ResultSetProcessorImpl.extractResults(ResultSetProcessorImpl.java:129)
   at org.hibernate.loader.plan.exec.internal.AbstractLoadPlanBasedLoader.executeLoad(AbstractLoadPlanBasedLoader.java:138)
   at org.hibernate.loader.plan.exec.internal.AbstractLoadPlanBasedLoader.executeLoad(AbstractLoadPlanBasedLoader.java:102)
   at org.hibernate.loader.entity.plan.AbstractLoadPlanBasedEntityLoader.load(AbstractLoadPlanBasedEntityLoader.java:186)
   at org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:4120)
   at org.hibernate.event.internal.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:502)
   at org.hibernate.event.internal.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:467)
   at org.hibernate.event.internal.DefaultLoadEventListener.load(DefaultLoadEventListener.java:212)
   at org.hibernate.event.internal.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:274)
   at org.hibernate.event.internal.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:150)
   at org.hibernate.internal.SessionImpl.fireLoad(SessionImpl.java:1066)
   at org.hibernate.internal.SessionImpl.access$2000(SessionImpl.java:176)
   at org.hibernate.internal.SessionImpl$IdentifierLoadAccessImpl.load(SessionImpl.java:2540)
   at org.hibernate.internal.SessionImpl.get(SessionImpl.java:951)
   at principal.ClienteDAO.obtenContacto(ClienteDAO.java:83)
   at principal.Main.main(Main.java:43)

Have no idea why im getting that exception不知道为什么我得到那个例外

EDIT1 here is principal.Cliente EDIT1这里是 principal.Cliente

public class Cliente {
    private String name;

    public Cliente(String name) {
        this.name= name;
    }
}

EDIT 2 removed a bunch of useless code to make it look cleaner EDIT 2删除了一堆无用的代码,让它看起来更干净

Missing default constructor in principal.Cliente I can say, principal.Cliente缺少默认构造函数principal.Cliente我可以说,

public class Cliente{ 
  public Cliente(){}
}

when you are adding more constructors, make sure to keep the default one. 当您添加更多构造函数时,请确保保留默认构造函数。

public Cliente(){
   super()
}

The easiest way to get rid of this error in spring boot is to use the @NoArgsConstructor annotation.在 spring boot 中摆脱这个错误的最简单方法是使用 @NoArgsConstructor 注释。 For this you will need lombok dependency.I always recommend to use lombok in spring boot projects.为此,您将需要 lombok 依赖项。我始终建议在 Spring Boot 项目中使用 lombok。 Then your entity class will be as follows那么你的实体类将如下

import lombok.NoArgsConstructor;

    @Entity
    @NoArgsConstructor
    public class Cliente{ 
      
    }

Notice, in spring boot you should have at least 2 constructors for the models you have.请注意,在 spring 引导中,您应该至少有 2 个用于您拥有的模型的构造函数。

  1. Constructor empty构造函数为空

    public Cliente(){}公共 Cliente(){}

  2. Constructor with all the fields, minus the id.具有所有字段的构造函数,减去 id。

  3. (facultative) Constructor with all the fields, id included. (兼性)具有所有字段的构造函数,包括 id。

You should include all of these 3 Constructors in your model.您应该在 model 中包含所有这 3 个构造函数。 If you remove the first constructor it gives you the error you reported.如果您删除第一个构造函数,它会给您报告的错误。 The 2nd constructor is used by hybernate to generate an instance and save it on the table of the db. hybernate 使用第二个构造函数来生成一个实例并将其保存在数据库的表上。 The id should be generated automatically. id 应该是自动生成的。 The 3rd constructor it is useful for you for making tests.第三个构造函数对您进行测试很有用。

暂无
暂无

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

相关问题 org.hibernate.InstantiationException:无法实例化抽象类或接口 - org.hibernate.InstantiationException: Cannot instantiate abstract class or interface org.hibernate.InstantiationException:如何告诉 Hibernate 哪个 class 用于 ZA8CFDE63311C49EB2AC96B8666 实例化 - org.hibernate.InstantiationException: How to tell Hibernate which class to use for object instantiation Hibernate:在onetomany关联中获取多态集合时获取org.hibernate.InstantiationException - Hibernate: Getting org.hibernate.InstantiationException While Fetching polymorphic Collections in onetomany association org.hibernate.InstantiationException:无法实例化抽象类或接口:device.Dispositivo - org.hibernate.InstantiationException: Cannot instantiate abstract class or interface: device.Dispositivo Hibernate Annotations:没有实体的默认构造函数 - Hibernate Annotations : No default constructor for entity hibernate 使用@Data 注释创建的“没有实体的默认构造函数” - hibernate "No default constructor for entity" created with @Data annotation 项目 Lombok + Hibernate 没有实体的默认构造函数 - Project Lombok + Hibernate No Default Constructor for Entity Hibernate中内部类的实体没有默认构造函数 - No default constructor for entity for inner class in Hibernate Hibernate:没有实体Inner Class的默认构造函数 - Hibernate: No default constructor for entity Inner Class 无法获取org.hibernate.persister.entity.SingleTableEntityPersister错误的构造函数 - Could not get constructor for org.hibernate.persister.entity.SingleTableEntityPersister error
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM