Я работаю над базой кодов J2EE 6, которая использует Hibernate в качестве поставщика сохраняемости. Мой опыт больше связан с 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();