我的问题是,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/