小编Chi*_*jee的帖子

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

枚举,

public enum CountEnum {
   ONE,
   TWO
}
Run Code Online (Sandbox Code Playgroud)

实体类,

@Entity
public class Test {
...
    @Enumerated(EnumType.ORDINAL)
    private CountEnum countEnum;
...
}
Run Code Online (Sandbox Code Playgroud)

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

我的存储库界面,

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

但它会抛出一个错误说 Attribute value must be constant. 那么,由于我不想放置硬编码的常量值,因此如何使用枚举的序数值查询所有这些行?

java hibernate jpa spring-data-jpa spring-boot

5
推荐指数
1
解决办法
3416
查看次数

标签 统计

hibernate ×1

java ×1

jpa ×1

spring-boot ×1

spring-data-jpa ×1