这似乎有效,但我希望有人确认一下:
我的实体有一个基类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中选择行。
这真的是这样吗?
答案 0 :(得分:1)
如果您提供在存储库接口级别声明的类型的子类型,我们将使用它来执行查询(读取:本质上是触发器em.createQuery(typeReturnedByTheMethod)
)。如果返回的类型不是由存储库管理的域类的子类型,我们仍将使用普通域类型。