Невозможно создать класс POJO при весенней загрузке. Получение сообщения об ошибке «Не управляемый тип» - PullRequest
0 голосов
/ 27 апреля 2019

У меня есть запрос, который возвращает столбцы из двух разных таблиц. И я создал новый класс POJO для хранения данных столбца. Но класс POJO выдает ошибку как «Не управляемый тип».

Эта ошибка исчезает, когда я добавляю @Entity и @Id. Но тогда я получаю ошибку как,

Не удалось конвертировать из типа [java.lang.Object []] в тип [@ org.springframework.data.jpa.repository.Query com.library.model.entity.CatalogDisplay]. Правильно ли использовать @Entity, поскольку нет фактической таблицы?

package com.library.model.entity;


public class CatalogDisplay {


    private long bookid ;
    private String bookname ;


    public CatalogDisplay(long bookid, String bookname) {
        super();
        this.bookid = bookid;
        this.bookname = bookname;
    }

//has getters and setters

Класс репозитория

@Repository
public interface BookCatalogRepository extends CrudRepository<CatalogDisplay, Long> {
    /**
     * Query to find all the books from catalog;
     */

    @Query ("Select bc.id , bd.bookname from  BookCatalog bc , BookDetails bd")
    List<CatalogDisplay> findAll() ;

}

Пожалуйста, дайте мне знать, если это нужно исправить или есть другой способ записи, когда требуются столбцы из нескольких таблиц.

Ответы [ 2 ]

0 голосов
/ 27 апреля 2019

Поскольку класс CatalogDisplay кажется DTO или моделью представления, я не думаю, что добавление к нему знака @Entity - правильный путь. Я думаю, что вместо этого вы хотите использовать оператор new в запросе jpql, чтобы поставщик JPA создавал объекты для вас. Тогда ваш запрос будет SELECT NEW com.library.model.entity.CatalogDisplay(bc.id , bd.bookname) from BookCatalog bc, BookDetails bd. Таким образом, вы сообщаете провайдеру JPA конструктор, какой класс использовать.

0 голосов
/ 27 апреля 2019

Вы пропускаете аннотацию @Entity поверх класса CatalogDisplay.

Также добавьте @Id на pf книги и сделайте его длинным

@Entity
public class CatalogDisplay {

    @Id
    private Long bookid ;
    private String bookname ;

Также удалите код из вашего интерфейса, он не нужен

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