gpt4 book ai didi

存储库中的 Spring Data JPA 继承

转载 作者:行者123 更新时间:2023-12-04 16:58:12 26 4
gpt4 key购买 nike

我有一个用 @MappedSuperClass 注释的抽象类.大约有 15 个实体扩展了这个抽象类(在数据库中有 15 个对应的表)。这 15 个实体都具有继承自抽象父类(super class)的相同属性。

我为抽象类创建了一个如下存储库:

@NoRepositoryBean
public interface AbstractRepository <T extends AbstractClass, E extends Serializable>
extends PagingAndSortingRepository<T, Serializable> {
.....some methods here
}

15 个实体/表存储一些数据(与 15 个单独设备有关的数据)。根据选择的设备,将检索该表中的数据。我是否必须为 15 个具体实体创建 15 个单独的存储库,或者有没有办法仅使用抽象存储库为所选设备获取特定实体?如果需要为每个具体实体创建存储库,如何为特定设备调用获取正确的存储库? (可能将表名和存储库类存储在应用程序启动时创建的映射中?)

最佳答案

您必须为每个类创建存储库。但是,您可以将方法保留在抽象中。您需要提供 @Query在每个方法上并使用 SpeL(Spring Expression Language) 将类型添加到查询中。

@NoRepositoryBean
public interface AbstractRepository<T extends AbstractEquipment>
extends CrudRepository<T, Long>{

@Query("select e from #{#entityName} as e from equipment where e.name = equipmentName")
T findEquipmentByName(String equipmentName);

}

然后像下面这样扩展
@Transactional
public interface SpecialEquipmentRepo extends AbstractRepository<SpecialEquipment,Long>{

}

关于存储库中的 Spring Data JPA 继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43350397/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com