我有一个分配给每个项目的 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 绑定到 x.getRank();
所以问题是:在这种情况下,jpa 实际比较的是什么?由于映射是有序的,我认为这应该可以工作,因为值存储为整数。
提前致谢。