首页 文章

Spring数据couchbase文件java类继承

提问于
浏览
2

我的问题是,spring数据库不会搜索搜索类的子类 . 例如:

模型:

@Document 
class A { 
   @Id
   String id 
}

@Document
class B extends A {}

和存储库:

public interface ARepository extends PagingAndSortingRepository<A, String>{
     Page<A> findAll(Pageable pageable);
}

Spring数据couchbase生成查询,具有where条件

_class =“com.example.model.A”

但是我想在这个查询中搜索B文件 . 在某种程度上,我该怎么做?当我编写自己的查询时,我必须在查询中定义顺序,限制和偏移,并且不使用Pageable . 但我想使用Pageable .

1 回答

  • 0

    考虑基于继承的通用接口 .

    首先创建超级类:

    @Inheritance
    public abstract class SuperClass{ 
    
      @Id
      private int id;
    }
    

    然后创建您的子类:

    public class A extends SuperClass { /* ... */ }
    public class B extends SuperClass { /* ... */ }
    

    创建基础存储库:

    @NoRepositoryBean
    public interface SuperClassBaseRepository<T extends SuperClass> 
    extends PagingAndSortingRepository<T, Integer> { 
         public T findAll();
    

    }

    然后基于基础仓库创建SuperClass存储库:

    @Transactional
    public interface SuperClassRepository extends SuperClassBaseRepository<SuperClass> { /* ... */ }
    
    @Transactional
    public interface ARepository extends SuperClassBaseRepository<A> { /* ... */ }
    
    @Transactional
    public interface BRepository extends SuperClassBaseRepository<B> { /* ... */ }
    

    SuperClassRepository findAll() 将搜索所有A和B类

相关问题