gpt4 book ai didi

java - JPA : Comparing (>=) ordinal enum in query

转载 作者:行者123 更新时间:2023-12-01 04:49:43 58 4
gpt4 key购买 nike

我有一个枚举,其中分配给每个项目的 int 值。

    public enum RankEnum {
NO_RANK(0),
FIRST_RANK(1),
...,
LAST_RANK(7);

private int rank;

RankEnum(int rank) { this.rank = rank; }

public int getRank() { return this.rank; }
}

整数值的目的是为了更容易地比较不同元素的排名(例如 e1.rank < e2.rank2)。所以我将它们映射到我的实体中,如下所示:

    @Column(...)
@Enumerated(EnumType.ORDINAL)
private RankEnum rank;

不幸的是,当我尝试创建查询来查找例如排名高于另一个实体 x 的所有实体时,结果不正确。

    Select entity FROM Entity entity WHERE entity.rank > :rank

:rank 绑定(bind)到 x.getRank();

所以问题是:在这种情况下 jpa 实际比较的是什么?由于映射是有序的,我认为这应该可行,因为值存储为整数。

提前致谢。

最佳答案

枚举的序数与分配给枚举的每个实例的排名无关。每个枚举都有一个序数。第一个声明的序数从 0 开始,然后是 1,然后是 2,依此类推:

public enum Season {
WINTER, // ordinal = 0
SPRING, // ordinal = 1
SUMMER, // ordinal = 2
AUTUMN; // ordinal = 3
}

枚举会自动按序数进行比较。所以Season.WINTER.compareTo(Season.SPRING) < 0 .

关于java - JPA : Comparing (>=) ordinal enum in query,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15198642/

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