抱歉这个相当基本的问题,但我必须让某种原型非常快速地工作,这是我第一次涉足 JPA。
我有一个类 System,它有一个快照项目列表,每个项目都有一个数字 ID 和一个 SystemID。
如何查询快照以说出以下内容:
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;
我可以查询数字 id 还是使用 System object 来查找特定系统的快照?
对不起,如果这令人困惑!