Org.hibernate.InstantiationException:Entity::原则.Cliente没有默认构造函数

uyhoqukh  于 2022-11-14  发布在  其他
关注(0)|答案(4)|浏览(115)

我遇到了这个错误:

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)

我不知道为什么我会有这样的例外

EDIT1这里是主体。客户端

public class Cliente {
    private String name;

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

编辑2删除了一堆无用的代码,让它看起来更干净

nfzehxib

nfzehxib1#

我可以说,principal.Cliente中缺少默认构造函数,

public class Cliente{ 
  public Cliente(){}
}
o75abkj4

o75abkj42#

添加更多构造函数时,请确保保留默认构造函数。

public Cliente(){
   super()
}
piah890a

piah890a3#

请注意,在Spring Boot中,您应该为您拥有的模型至少有2个构造函数。
1.构造函数为空(无参数:在Java术语中称为“默认构造函数”)
公共客户端(){}
1.带有所有字段的构造函数,减去id。
1.(兼职)包含所有字段的构造函数,ID包含在内。
您应该在模型中包含前两个构造函数。如果删除第一个构造函数,它会显示您报告的错误。第二个构造函数由hybernate用来生成一个示例并将其保存在数据库的表中。ID是自动生成的。第三个构造器,它对你用模拟数据进行测试很有用。

dnph8jn4

dnph8jn44#

在Spring Boot中消除此错误的最简单方法是使用@NoArgsConstructor注解。为此,您需要依赖Lombok。我总是建议在 Spring 启动项目中使用Lombok。那么您的实体类将如下所示

import lombok.NoArgsConstructor;

    @Entity
    @NoArgsConstructor
    public class Cliente{ 
      
    }

相关问题