java - Spring data couchbase文档java类继承

标签 java spring inheritance couchbase spring-data-couchbase

我的问题是,spring data couchbase 不搜索搜索类的子类。例如:

型号:

@Document 
class A { 
   @Id
   String id 
}

@Document
class B extends A {}

和存储库:

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

Spring data couchbase 生成查询,有where条件

_class="com.example.model.A"

但我也想在此查询中搜索 B 文档。是某种方式,我该怎么做?当我编写自己的查询时,我必须在查询中定义顺序、限制和偏移量,并且不使用 Pageable。但我想使用 Pageable。

最佳答案

考虑基于继承的通用接口(interface)。

首先创建父类(super class):

@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 类

关于java - Spring data couchbase文档java类继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49669986/

相关文章:

Java递归二叉树

java - 为什么基本类型有一个 "Class"以及它是如何使用的?

java - Spring boot JNDI不工作,tomcat无法启动

spring - Kotlin - 如何在 springBootTest 中管理 @BeforeClass 静态方法

Javascript - 覆盖克隆库中继承的方法

java - 当内存占用超过一定阈值时强制进行全面垃圾回收

java - 在 Play 中使用纯 JSP 标签

java - Spring Boot 中的分层 Bean 依赖

java - isEmpty() 的实现

c++ - 我如何使用具有继承和模板的友元类