簡體   English   中英

JPA-EntityManager的findByProperty()的等效項

[英]JPA - equivalence of findByProperty() of EntityManager

DAO提供findByProperty(String propertyName, Object value)以使用特定屬性查找對象。 但是JPA中的EntityManager僅基於主鍵搜索提供find() ,請參閱EntityManager

為了避免編寫SQL,EntityManager是否具有與常規findByProperty()方法等效的功能?

解:

  1. 使用@Viswanath L建議的Critieria API
  2. 編寫您自己的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM