我正在研究使用 Hibernate 作为其持久性提供程序的 J2EE 6 代码库。我的经验更多是在 Spring 中,而且我对 JPA 注释和类似的东西还很陌生,但是我在所有实体类中都注意到了很多这种情况,这让我感到惊讶——我认为 @NamedQuery 更适用于复杂的 SQL?当然,这些简单的选择(以及在休眠映射中定义的连接)可以在不写出 SQL 的情况下完成吗?
In the Entity:
@NamedQueries({
@NamedQuery(name = "DealRaw.findByrawUrl", query = "SELECT d FROM DealRaw d WHERE d.rawUrl = :rawUrl"),
@NamedQuery(name = "DealRaw.findByState", query = "SELECT d FROM DealRaw d WHERE d.state = :state"),
.... etc ....
})
接着
In the Service Class
Query qR=_em.createNamedQuery("DealRaw.findByrawUrl"); //_em is an EntityManager
qR.setParameter("rawUrl", value);
List<DealRaw> dRs=(List <DealRaw>)qR.getResultList();