2013-03-19 79 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