このかなり基本的な質問で申し訳ありませんが、ある種のプロトタイプを非常に迅速に動作させる必要があり、これがJPAへの最初の進出です。
スナップショット項目のリストを持ち、それぞれに数値IDとSystemIDを持つクラスSystemがあります。
スナップショットにクエリを実行して、次のように言うにはどうすればよいですか。
select top 1 ID from Snapshots
where Snapshots.SystemID = X
order by Snapshots.ID desc;
whereクエリを配置する方法を知っていますが、「最大の」ビットをどこに配置するかわかりません。
ありがとう!!
public Snapshot GetMostRecentSnapshotByID(int systemID) {
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<mynamespace.Snapshot> criteria =
cb.createQuery(mynamespace.Snapshot.class);
Root<mynamespace> snapshot = criteria.from(mynamespace.Snapshot.class);
criteria.where(cb.equal(snapshot.get(Snapshot_.systemID), systemID));
//OK -- where does this guy go?
cb.greatest(snapshot.get(Snapshot_.id));
return JPAResultHelper.getSingleResultOrNull(em.createQuery(criteria));
}
明確化:スナップショットクラスの次の(スニペット)@
Entity
public class Snapshot implements Serializable {
@Id
@GeneratedValue
private int id;
@ManyToOne
@JoinColumn(name = "systemID", nullable = false)
private System system;
特定のシステムのスナップショットを見つけるために、Systemオブジェクトを使用するのではなく、数値IDに対してクエリを実行できますか?
それが混乱していたならごめんなさい!