JPARepository是否使用方法返回类型来查找目标表?

时间:2013-03-19 13:33:43

标签: jpa spring-data spring-data-jpa

这似乎有效,但我希望有人确认一下:

我的实体有一个基类BaseEntity。

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

然后我有几个实体,比如从BaseEntity扩展的A和B和C. 另外,我有一个JPARepository定义为:

JPARepository<BaseEntity, Long>

现在看起来像我可以使用此存储库分别查询表A,B或C,只需更改返回类型即可。例如:

public List<B> findBsByNameContaining(String name);

将导致查询仅从表B中选择行。

这真的是这样吗?

1 个答案:

答案 0 :(得分:1)

如果您提供在存储库接口级别声明的类型的子类型,我们将使用它来执行查询(读取:本质上是触发器em.createQuery(typeReturnedByTheMethod))。如果返回的类型是由存储库管理的域类的子类型,我们仍将使用普通域类型。