私は、列挙型の優先順位の列で並べ替えられたテーブルからデータをフェッチしたいと思います。我々は、javaee 6、GF 3.1を使用します。このJPQL Enumで注文
@Entity
@Table(name="ITEMS")
@NamedQueries({
@NamedQuery(
name = "Item.findbyPriority",
query = "select i from Item i where ORDER BY i.priority DESC")
})
public class Item implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
Integer id;
String data inputFile;
@Enumerated(EnumType.ORDINAL)
Priority priority;
...
}
優先順位は序、およびリターンで
public enum Priority {
HIGH,
NORMAL;
}
しかしItem.findbyPriorityクエリの種類を定義しているように私たちの実体が見え
が誤った順序になります。私が優先クラスを変更した場合
public enum Priority {
NORMAL,
HIGH;
}
正常に動作します。しかし、それは本当に堅牢ではありません。新しい優先度を追加したり、並べ替えるとどうなりますか?
compareToメソッドをオーバーライドしようとしましたが、最後はEnumクラスです。
この場合、私は何ができますか?どのようにしてうまくいくのですか?
私は数字などとして優先順位を格納することができると知っていますが、Enumにエンティティを同期する必要があります。 @PrePersist、@PreUpldate、および@PostLoadメソッドはどうなるのでしょうか?どのようにしてjpqlクエリのようになりますか?
おかげで、
ミラノ
あなたの答えはありがとう、あなたの言うことは基本的に返された結果を並べ替えることです、そうですか? – udik
まさに、あなたは正しいです。 –