我有一個int值分配給每個項目的枚舉。JPA:在查詢中比較(> =)序號枚舉
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; }
}
整數值的intetion是使其更容易彼此不同的元素,關於它們的秩比較(例如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實際上是什麼比較?由於映射是序數,我認爲這應該工作,關於值存儲爲整數。
在此先感謝。
那麼你有沒有看過什麼樣的SQL? – 2013-03-04 09:51:51
...其中entity0_.RANK>? – Alex 2013-03-04 10:22:54
好的,RANK在數據庫中看起來像什麼?你說結果「不正確」 - 與你期望的相比,會發生什麼? – 2013-03-04 10:25:46