gpt4 book ai didi

spring - 带有枚举的 QuerySyntaxException

转载 作者:行者123 更新时间:2023-12-05 02:57:54 25 4
gpt4 key购买 nike

我有一个像这样的 UserAssignmentRole 类:

@Data
@Entity
public class UserAssignmentRole {
...
@Enumerated(EnumType.STRING)
public Role role;
}

角色是枚举,看起来像这样:

public enum Role{
admin,
member,
pending
}

现在,当我在我的存储库中尝试查询以选择所有具有 admin 角色时,它给我错误:

@Query("select uar from UserAssignmentRole uar where uar.role=Role.admin")
public List<UserAssignmentRole> listAdmin(Long userID, Long assignmentID);

如何解决?

错误:org.hibernate.hql.internal.ast.QuerySyntaxException:无效路径:'Role.admin'

完整错误:https://pastebin.com/tk9r3wDg

最佳答案

自 5.2.x 以来,这是 Hibernate 的一种奇怪但有意为之的行为枚举值是常量,您使用的是非常规命名(小写)

看看this issue和 Vlad Mihalcea 对 performance penalty 的详细解释.

If you’re using non-conventional Java constants, then you’ll have to set the hibernate.query.conventional_java_constants configuration property to false. This way, Hibernate will fall back to the previous behavior, treating any expression as a possible candidate for a Java constant.

关于spring - 带有枚举的 QuerySyntaxException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59543649/

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