[英]JPA - equivalence of findByProperty() of EntityManager
DAO提供findByProperty(String propertyName, Object value)
以使用特定屬性查找對象。 但是JPA中的EntityManager僅基於主鍵搜索提供find()
,請參閱EntityManager
為了避免編寫SQL,EntityManager是否具有與常規findByProperty()
方法等效的功能?
解:
編寫您自己的findByProperty()
,它與DAO的findByProperty()
相同,如下所示:
public List<User> findByProperty(String propertyName, final Object value) try { final String queryString = "select model from **User** model where model." + propertyName + "= :propertyValue"; Query query = getEntityManager().createQuery(queryString); query.setParameter("propertyValue", value); return query.getResultList(); } catch (RuntimeException re) { logger.error("find by property name failed", re); throw re; } }
就個人而言,由於簡潔,我喜歡第二個, 唯一的修改是表名。 此外,這種方法非常靈活,您可以基於該方法編寫findByProperty()的許多版本。
在Hibernate中使用Criteria
API。 推薦這個
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.