gpt4 book ai didi

java - 有没有办法在 JPA 存储库中的 @Query 注释中使用常量(EnumType Ordinal)值?

转载 作者:行者123 更新时间:2023-12-01 16:44:10 24 4
gpt4 key购买 nike

枚举,

public enum CountEnum {
ONE,
TWO
}

实体类,

@Entity
public class Test {
...
@Enumerated(EnumType.ORDINAL)
private CountEnum countEnum;
...
}

我想查询所有具有 countEnum 'ONE'Test 行。但由于这里 @Enumerated(EnumType.ORDINAL) 是序数,我必须将 'ONE' 的 int 值放入 @Query 而不是 String 。

我的存储库界面,

public interface ResourceRepository extends JpaRepository<Test, String> {
@Query(" select test from Test test where test.countEnum = " + CountEnum.ONE.ordinal())
List<Test> find();
}

但它会抛出一个错误,指出属性值必须是常量。那么,由于我不想放置硬编码的常量值,因此如何使用枚举的序数值查询所有这些行?

最佳答案

您认为为什么在编写 JPQL 时必须使用序数值?

JPA 规范说:

4.6.1 Literals

[...] Enum literals support the use of Java enum literal syntax. The fully qualified enum class name must be specified.

因此,我希望像下面这样的东西能够工作:

public interface ResourceRepository extends JpaRepository<Test, String> {
@Query(" select test from Test test where test.countEnum = com.somepackage.with.sub.pakcages.CountEnum.ONE")
List<Test> find();
}

关于java - 有没有办法在 JPA 存储库中的 @Query 注释中使用常量(EnumType Ordinal)值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56130782/

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