наследование / сохранение объекта - PullRequest
0 голосов
/ 28 марта 2020

Я пытаюсь сохранить класс Product в базе данных.

У меня есть класс Food, загруженный из foregin Api, и в этом классе много ненужных полей. Могу ли я просто продлить еду на продукт, как показано ниже

Если нет, есть ли более короткий способ разобрать это без перенастройки каждого поля?

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 
    ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...