当前位置: 首页 > 知识库问答 >
问题:

将generic作为实体类型的Spring数据仓库

颛孙俊
2023-03-14

我想在我的项目中使用SpringDataJPA存储库。通常我创建自己的存储库

interface ProductRepository extends JPARepository<Product, Long>

但是,我想提供符合以下条件的更复杂的情况:

>

  • 我有一个具有共同定义的基本实体:

    @MappedSuperclass
    public abstract class AbstractBaseEntity {
        @GeneratedValue(strategy = GenerationType.AUTO)
        @Id
        @Column(name = "ID", nullable = false)
        private Long id;
        ...
    }
    

    我有扩展上述实体的所有其他实体,例如:

    @Entity
    @Table(name = "bread")
    public class Bread extends AbstractBaseEntity {
    @Column
    String type;
    ...
    }
    

    @Entity
    @Table(name = "butter")
    public class Butter extends AbstractBaseEntity {
    @Column
    String weight;
    ...
    }
    

    公共接口 MyBaseRepository

    然后定义几个常用的方法,然后如下使用它:

    公共接口面包库

    公共接口ButterRepository扩展了MyBaseRepository

    问题是我不能这样做。当我定义MyBaseRepostory时,如果我使用:

    我的基本存储库

    当我运行真实查询时,出现了一个错误,即“实体没有属性类型”。如果我只使用

    扩展 Jpa存储库

    我得到一个错误,对象未映射。如果我尝试

    Jpa存储库

    它只是因为意外的绑定错误而失败。

    我错过了什么吗?或者这对于Spring Data JPA是不可行的?

    谢谢你!


  • 共有1个答案

    江光明
    2023-03-14

    我知道这是一个旧线程,但我在尝试定义MyBaseRepostory这样的存储库时遇到了同样的错误

    在我的案例中,错误是:

    无法为方法公共抽象MyBaseRepository.someMethod()创建查询;不是实体:AbstractBaseEntity

    关键是JPA试图实现所有扩展JpaRepostory的接口,但在MyBaseRepostory上做不到

    解决方案是注释MyBaseRepository。

     类似资料:
    • 在GSON中获取对象列表 遗憾的是,返回的是StringMaps数组,而不是类型。T被解释为另一个泛型类型,而不是我的类型。有什么办法吗?

    • 阅读有关在DAO层中使用Java泛型的信息,我怀疑将其应用于spring数据存储库。我的意思是,使用 spring 数据存储库,你有这样的东西: 但是如果我有其他10个实体,我必须创建10个类似于上面的接口来执行CRUD操作等等,我认为这不是很可扩展的。Java Generics和DAO是关于创建一个接口和一个实现,并将其用于实体,但使用Spring数据存储库,我必须为每个实体创建一个界面,因此。

    • 问题内容: 背景 将列数据类型映射到其对应的Java类。 问题 查询从数据库返回元信息: 例如,此查询返回(自引用): 其中“ dictionary”是架构名称,“ resource_bundle”是object_name,“ column_name”是column_name。 要做类似的事情会很棒: 并返回以下查询: 然后使用JDBC发现已映射到。 问题 在PostgreSQL中,如何给定架构名

    • 我正在开发一个将在MySql和MS SQL上运行的应用程序。 我有一个字段是空间的“几何”类型。 通过使用: (点是org.springframework.data.geo.point) Hibernate正确创建字段(hbm2ddl)。 但插入任何一点都不起作用。I get:数据截断:无法从发送到“几何体”字段的数据中获取几何体对象 我使用spring boot jpa启动器。。而不是直接冬眠。

    • 当我使用Spring Data Neo4j(SDN)查找节点实体时,我遇到了一些奇怪的行为。如果我使用GraphRepository.findOne(long),它将返回一个具有该标识符的实体,即使该实体不是同一类型。 这就是我(非常)简化的实体结构的样子: 对于每种实体类型,我都创建了这样的存储库: 我为我的服务层类准备了一个抽象基类。这是它们大致的样子: 当我执行以下代码时,结果不如预期: 您

    • 我正在努力让Spring JPA Data为我工作,但一直在努力。问题出在这里。 我有两个域类,它们之间有一个简单的一对多关系: 我已经为每个类设置了存储库接口:CardRepository,扩展JpaRepository的用户存储库,两个存储库都注入到服务中 非常基本的设置。someMethod() 出现问题,其中我用它的标识符查询了一个用户,然后尝试获取映射@OneToMany的列表,然后发生