我正在寻找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
的所有子类也可用于查询。因此,如果UserA
和UserB
实体扩展了User
类,则所有三种类型都可用于实体查询,并且查询将返回所有三种类型的实例。
你甚至可以这样写:
public interface UserRepository extends CrudRepository<User, Long>
{
@Query("select o from java.lang.Object o")
List<Object> findAllEntities();
}
,尽管从性能的角度来看,这不是很实用。