2013-03-19 81 views
0

這似乎工作,但我想有人確認這一點:JPARepository使用方法返回類型來查找目標表嗎?

我有我的實體的基類BaseEntity。

@Entity 
@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS) 
public abstract class BaseEntity { 
... 
} 

然後我有幾個實體,說A和B和C從BaseEntity延伸。 此外,我有一個單一的JPARepository定義爲:

JPARepository<BaseEntity, Long> 

現在看起來像我可以使用該存儲庫與簡單地改變返回類型分別查詢表A,B或C。例如:

public List<B> findBsByNameContaining(String name); 

將導致只從表B選擇行的查詢。

這是真的嗎?

回答

1

如果您提供您在存儲庫接口級別聲明的類型的子類型,我們將使用它來執行查詢(讀取:本質上是觸發器em.createQuery(typeReturnedByTheMethod))。如果返回的類型是而不是由存儲庫管理的域類的子類型,我們仍將使用純域類型。

+0

感謝您澄清! – wannabeartist 2013-03-20 17:16:38