Java 缺少具有EmbeddedId的实体的默认构造函数
当我试图从JPA存储库中获取实体列表时,总是会遇到这样的异常Java 缺少具有EmbeddedId的实体的默认构造函数,java,hibernate,jpa,spring-data,Java,Hibernate,Jpa,Spring Data,当我试图从JPA存储库中获取实体列表时,总是会遇到这样的异常 org.springframework.orm.jpa.JpaSystemException: No default constructor for entity: : pl.hycom.hyper.hyebok.model.ServiceEntity$Id; nested exception is org.hibernate.InstantiationException: No default constructor for en
org.springframework.orm.jpa.JpaSystemException: No default constructor for entity: : pl.hycom.hyper.hyebok.model.ServiceEntity$Id; nested exception is org.hibernate.InstantiationException: No default constructor for entity: : pl.hycom.hyper.hyebok.model.ServiceEntity$Id
我的实体中缺少什么。我在可嵌入类和外部类中都有非args构造函数和所有args构造函数。我找不到解决这个问题的办法
下面是我的实体
@Entity
@Table(name = "he_service")
public class ServiceEntity implements Serializable {
@EmbeddedId
private Id id ;
private String name;
public ServiceEntity() {
}
public ServiceEntity(Id id, String name) {
this.id = id;
this.name = name;
}
@Embeddable
class Id implements Serializable {
public Id() {
}
public Id(String serviceId, String clientId) {
this.serviceId = serviceId;
this.clientId = clientId;
}
@Column(name = "serviceId")
private String serviceId;
@Column(name = "clientId")
private String clientId;
public String getServiceId() {
return serviceId;
}
public void setServiceId(String serviceId) {
this.serviceId = serviceId;
}
public String getClientId() {
return clientId;
}
public void setClientId(String clientId) {
this.clientId = clientId;
}
}
那里的存储库方法
@Query(value= "SELECT s FROM ServiceEntity s " +
"WHERE s.id.clientId = :clientId")
List<ServiceEntity> findByClientId(@Param("clientId") String clientId);
@Query(value=“从服务实体s中选择s”+
“其中s.id.clientId=:clientId”)
列出findByClientId(@Param(“clientId”)字符串clientId);
将Id
类设置为静态。否则它将需要一个ServiceEntity
的实例来实例化。您的内部Id
类是非静态的,这意味着它创建了一个构造函数
class Id implements Serializable {
public Id(ServiceEntity arg0) {
}
// …
}
将其更改为静态
类
static class Id implements Serializable {
// …
}
如果需要保存在不同的包中,您还可以在自己的
Id.java
文件中声明Id
,如class Id{}
或public class Id{}
一般相关信息:
可能问题是Spring
在这方面失败了
需要包含ServiceEntity.ID的封闭实例
我是Java新手,一直在探索全栈Java和angular应用程序 我创建了一个服务,允许我执行CRUD操作并将数据存储在内存数据库中 我试图在
http://localhost:8080/users/Joe/all-待办事项
我得到了OP提出的错误
为了解决我的问题,我必须创建一个默认构造函数,如下所示:
//JPA在我的实体类ToDo中需要一个默认构造函数
受保护的ToDo(){}
注意这里我使用的是JPA。我只是将默认构造函数添加到我的实体类中,然后运行我的java应用程序,它呈现了数据
希望这对错误消息有所帮助。尝试将您的
Id
类设置为静态。