继承/保存实体

时间:2020-03-28 13:14:32

标签: java database inheritance entity

我正在尝试将Product类保存到数据库中。

我从foregin Api下载了Food类,该类有很多不必要的字段。 我可以像下面这样按产品扩展食品吗?

如果没有,是否有更短的方法来解析此方法而无需重新设置每个字段?

public class Food extends Product{ 

     lot of fields(..)
}

@Entity
public class Product{

     @Id
     Long id;

     part of fields from Food class(...)
}

然后保存

Product product = food;
productService.save(product);

出现错误:

ERROR 10632 --- [nio-8080-exec-3] o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.dao.InvalidDataAccessApiUsageException: Unknown entity: pl.manciak.nutritionixapi.dto.NutriResponse.Food; nested exception is java.lang.IllegalArgumentException: Unknown entity: pl.manciak.nutritionixapi.dto.NutriResponse.Food] with root cause

java.lang.IllegalArgumentException: Unknown entity: pl.manciak.nutritionixapi.dto.NutriResponse.Food
    at org.hibernate.internal.SessionImpl.firePersist(SessionImpl.java:713) ~[hibernate-core-5.4.12.Final.jar:5.4.12.Final]
    at org.hibernate.internal.SessionImpl.persist(SessionImpl.java:696) ~[hibernate-core-5.4.12.Final.jar:5.4.12.Final]
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na]
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
    at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na]
    at org.springframework.orm.jpa.ExtendedEntityManagerCreator$ExtendedEntityManagerInvocationHandler.invoke(ExtendedEntityManagerCreator.java:368) ~[spring-orm-5.2.4.RELEASE.jar:5.2.4.RELEASE]
    at com.sun.proxy.$Proxy89.persist(Unknown Source) ~[na:na]
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na]
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
    at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na]
    at 
    ...

0 个答案:

没有答案