hibernate - 无法在 Spring Boot 中创建 POJO 类。收到错误为“非托管类型”
问题描述
我有一个查询,它返回来自两个不同表的列。我创建了一个新的 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() ;
}
请让我知道这是否需要更正,或者当需要来自多个表的列时是否有其他方式来编写。
解决方案
您错过@Entity
了课程顶部的注释CatalogDisplay
。
还添加@Id
到 pf bookid 并使其成为 Long
@Entity
public class CatalogDisplay {
@Id
private Long bookid ;
private String bookname ;
还要从您的界面中删除代码,这不是必需的
推荐阅读
- r - 如何从R中同一列的两个观察中获得差异
- google-tag-manager - 谷歌标签管理器替代品
- veins - 使用 Venes_inet 时的障碍文件 (poly.xml) 和 IEEE802.11p
- android - 如何在 ScrollUp 上清除 RecyclerView 中的列表
- javascript - 如何在javascript中停止页面中的所有脚本?
- bash - 如何为这个嵌套的 Bash 脚本使用超时?
- python - Openpyxl 将百分比四舍五入到小数点后 1 位
- javascript - 可变类型:为什么在 Python 和 Ruby 中具有相同内容的数组被认为是相等的,而不是 Javascript?
- python - Celery 不使用所有 eventlet 线程
- python - 两个总和索引列表超出范围