如何使用jpa获取映射父类的列



我正在寻找Jpa中类似的查询Hibernate。

在Hibernate中,我可以检索映射超类的所有列,使用查询:

session.createQuery("from com.app.spring.entity.User", User.class);

我如何使用jpa实现这一点?我已经尝试使用SELECT NEW自定义查询。

如果可能的话,我也想通过调用父类来获取子类的所有条目,而不仅仅是父类中的常见属性。

如文档中所述:

JPQL中的select语句与HQL中的完全相同,只是JPQL需要select_clause,而HQL不需要。

所以,你可以用下面的方式纠正你的查询:

List<User> users = entityManager.createQuery(
"select u from com.app.spring.entity.User u", User.class)
.getResultList();

也如本节文档中所解释的:

HQL和JPQL查询本质上是多态的

该查询显式指定了User实体的名称。但是,User的所有子类也可用于查询。因此,如果UserAUserB实体扩展了User类,则所有三种类型都可用于实体查询,并且查询将返回所有三种类型的实例。

你甚至可以这样写:

public interface UserRepository extends CrudRepository<User, Long>
{
@Query("select o from java.lang.Object o")
List<Object> findAllEntities();
}

,尽管从性能的角度来看,这不是很实用。

最新更新