如何在仅使用 EclipseLink 查找仅具有唯一值的列中的值?
2022-09-03 18:12:13
您可以使用方法查找具有主键的特定行。EntityManager.find(Class entityClass, Object primaryKey)
但是,如何在仅具有唯一值且不是主键的列中找到值?
您可以使用方法查找具有主键的特定行。EntityManager.find(Class entityClass, Object primaryKey)
但是,如何在仅具有唯一值且不是主键的列中找到值?
您可以将适当的 JPQL 与 TypedQuery 结合使用。
try {
TypedQuery<Bean> tq = em.createQuery("from Bean WHERE column=?", Bean.class);
Bean result = tq.setParameter(1, "uniqueKey").getSingleResult();
} catch(NoResultException noresult) {
// if there is no result
} catch(NonUniqueResultException notUnique) {
// if more than one result
}
例如,如下所示:
List<T> results = em.createQuery("SELECT t FROM TABLE t", T.class)
.getResultList();
带参数:
List<T> results = em.createQuery("SELECT t FROM TABLE t where t.value = :value1")
.setParameter("value1", "some value").getResultList();
对于单个结果,替换为 :getResultList()
getSingleResult()
T entity = em.createQuery("SELECT t FROM TABLE t where t.uniqueKey = :value1")
.setParameter("value1", "KEY1").getSingleResult();
另一种方法是使用标准 API。