Spring data jpa Spring数据Jpa查询方法未调用repositoryBaseClass

Spring data jpa Spring数据Jpa查询方法未调用repositoryBaseClass,spring-data-jpa,Spring Data Jpa,我有一个存储库基类,定义如下 @NoRepositoryBean public interface BaseRepository<T, ID extends Serializable> extends JpaRepository<T, ID> { } 我定义了一个业务存储库类和一个查询方法,如下所示 @Repository public interface CarRepository extends BaseRepository<Car, Long> {

我有一个存储库基类,定义如下

@NoRepositoryBean
public interface BaseRepository<T, ID extends Serializable> extends JpaRepository<T, ID> {
}
我定义了一个业务存储库类和一个查询方法,如下所示

@Repository
public interface CarRepository extends BaseRepository<Car, Long> {
    @Query("SELECT c FROM Car c Where active = 1")
    List<Car> findAllActiveCars();
}
@存储库
公共接口存储库扩展了BaseRepository{
@查询(“从激活=1的车辆c中选择c”)
列出findAllActiveCars();
}

我有一个调用findAllActiveCars()的测试类。我得到了预期的结果。但是,该查询方法并没有调用BaseRepository类中的任何方法。如何定制查询方法的返回值?

您没有显示您所执行的方法,因此不清楚它们为什么没有被调用,但是既然要解密实体字段,请考虑监听JPAS实体生命周期事件。code>@PostLoad应该能够做到这一点


您想做什么样的定制?谢谢Jens。我想在返回查询结果之前解密一些实体字段。谢谢Jens。我试过后装。仅当第一次从数据库加载实体时才会调用它。这不符合我的目的。我想知道如何在spring数据中拦截基于查询的查找程序。看起来这些方法不是由repositoryBaseClass处理的。实体通常在使用JPA的每个会话中只加载一次。听起来很奇怪,你想改变一个实体,仅仅因为它再次被加载。但不管怎样,您都需要考虑使用自己的
JpaRepositoryFactory
替代品,然后使用自己的
QueryLookupStrategy
。下面是一个让您开始学习的示例:
@Configuration
@EnableJpaRepositories(basePackages = "org.example", 
    repositoryBaseClass = BaseRepositoryImpl.class)
public class BaseConfig {
    // additional JPA Configuration
}
@Repository
public interface CarRepository extends BaseRepository<Car, Long> {
    @Query("SELECT c FROM Car c Where active = 1")
    List<Car> findAllActiveCars();
}