gpt4 book ai didi

java - Hibernate JOIN [some entity] ON unexpected token

转载 作者:行者123 更新时间:2023-12-05 01:55:06 26 4
gpt4 key购买 nike

当我尝试通过 spring 数据执行此查询时,我使用 Hibernate 5.4.32.Final:

@Query("select new some.package.dto.TwoFieldDto(o.gln, u.email) "
+ "from OrganizationEntity o "
+ "join UserEntity u on u.organization.id = o.id "
+ "where o.gln in (:glnList)")
List<TwoFieldDto<String, String>> findEmailListByGlnIn(List<String> glnList);

在启动应用程序时,Hibernate 在到达 UserEntity token 时抛出 SyntexException,并给出意外的 token 。

如果我尝试从 UserEntity 端执行查询,查询编译成功。 (是的,我没有得到从 OrganizationEntity 到 UserEntity 的链接)

这个 Hibernate 版本不支持 JOIN ON syntex 吗? (OrganizationEntity 不包含 UserEntity 上的链接,但 UserEntity 有)。

最佳答案

@Query注释默认需要 JPQL,它有自己的语法。据我所知,您不能在 JPQL 中执行类似 JOIN .. ON 的操作。我不知道你们实体之间的关联,但它应该看起来像这样:

@Query("select new some.package.TwoFieldDto(o.gln, u.email) "
+ "from OrganizationEntity o "
+ "join o.UserEntity u "
+ "where o.gln in (:glnList)")

但要使其起作用,OrganizationEntityUserEntity 之间必须存在关联。

作为替代方案,您始终可以使用 native 查询,您可以在 native SQL 方言中执行 JOIN .. ON:

@Query(value = "SELECT ....", nativeQuery = true)

但只有当您确定不能使用 JPQL 时,这才应该是一个选项。

关于java - Hibernate JOIN [some entity] ON unexpected token,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70374973/

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