0

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

我的实体有一个基类 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 中选择行的查询。

这真的是这样吗?

4

1 回答 1

1

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

于 2013-03-20T15:48:36.847 回答