gpt4 book ai didi

java - 我可以将 HQL 与 JPA 的 @Query 注释一起使用吗?

转载 作者:行者123 更新时间:2023-12-02 01:19:33 25 4
gpt4 key购买 nike

我有两个相同的查询。一个由 entityManager.createQuery() 运行,另一个作为 PagingAndSortingRepository 中的 @Query 注释运行。 entityManager 查询运行正常,但 @Query 注释中的相同查询返回错误。

可能是因为 @Query 注释以 JPQL 执行查询,而 entityManager.createQuery() 以 HQL 执行查询?

以下是两个示例:

@Query(不起作用)

@Repository
public interface UserRepository extends PagingAndSortingRepository<User, UUID> {
@Query("select p.user from Perspective p where p.organisation.id = 'c25c86a0-0d8e-4beb-9ba7-e38d932b8410'")
List<User> findUsers();
}
could not resolve property: lastname of: org.jembi.appstore.service.entities.Perspective
// note: lastname is a property of user, not perspective.

entityManager.createQuery(有效)

    @Autowired
EntityManager entityManager;

@RequestMapping("/query")
@ResponseBody
public void testQuery() {
Query query = entityManager.createQuery("select p.user from Perspective p where p.organisation.id = 'c25c86a0-0d8e-4beb-9ba7-e38d932b8410'");
List<User> users = query.getResultList();
users.forEach(u -> System.out.println(u.getFirstname()));
}

最佳答案

这里有几个错误:

  1. 您正在定义 @Param("organisationId") ,但不在任何地方使用它。
  2. 您正在加入用户:join User u ,但切勿使用它:与 Perspective 没有任何关系where 中定义或使用条款。

尝试这个查询:

@Query("select p.user from Perspective p where p.organisation.id = :organisationId")
List<User> findUsers(@Param("organisationId") UUID organisationId, Pageable pageable);

关于java - 我可以将 HQL 与 JPA 的 @Query 注释一起使用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57978097/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com