如何在EclipseLink中找到具有唯一值的列中的值?

Rox*_*Rox 10 java sql jpa eclipselink

您可以使用EntityManager.find(Class entityClass, Object primaryKey)方法查找具有主键的特定行.

但是,如何在列中找到仅具有唯一值且不是主键的值?

Pau*_*Wee 14

您可以在TypedQuery中使用适当的JPQL .

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
}
Run Code Online (Sandbox Code Playgroud)


mak*_*mov 7

例如,像这样:

List<T> results = em.createQuery("SELECT t FROM TABLE t", T.class)
                        .getResultList();
Run Code Online (Sandbox Code Playgroud)

带参数:

List<T> results = em.createQuery("SELECT t FROM TABLE t where t.value = :value1")
                        .setParameter("value1", "some value").getResultList();
Run Code Online (Sandbox Code Playgroud)

对于单个结果替换getResultList()getSingleResult():

T entity = em.createQuery("SELECT t FROM TABLE t where t.uniqueKey = :value1")
                 .setParameter("value1", "KEY1").getSingleResult();
Run Code Online (Sandbox Code Playgroud)

另一种方法是使用Criteria API.

  • 谢谢您的回答.我知道我可以通过查询来完成它,我只是想知道我是否可以通过使用JPA的方法(例如`EntityManager.find()`)以更少的代码更快地完成它. (2认同)