簡體   English   中英

Spring Data Couchbase文檔Java類繼承

[英]Spring data couchbase documents java classes inheritance

我的問題是,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生成查詢,條件在何處

_class = “com.example.model.A”

但是我也想在此查詢中搜索B文檔。 是某種方式,我該怎么做? 當我編寫自己的查詢時,必須在查詢中定義順序,限制和偏移量,並且不使用Pageable。 但是我想使用Pageable。

考慮基於繼承的通用接口。

首先創建超類:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM