2014-12-11 86 views
-1

我有一个名为LeadGeneration和Lead的JPA注释模型类。我需要使用JPQL从上述两个类中获取结果集。我已经完成了我想要的结果集的SQL等价性。请告诉我如何将这个SQL转换为JPQL。必须将generated_employee_id和status作为参数。将sql查询转换为jpql(JPA)

SELECT * 
FROM lead_generation lg, lead l 
WHERE lg.lg_code = l.lead_generation AND lg.generated_employee_id = '111' AND l.status ='CONVERTED_LEAD' 
AND (first_appointment_date between DATE_FORMAT(NOW() ,'%Y-%m-01') AND NOW()); 

回答

0

确保lead_generation具有lead的集合。每个对象“。”变量必须是对象的setter和getter。

SELECT * FROM lead_generation lg INNER_JOIN lg.leads l WHERE lg.generated_employee_id = :id AND l.status= :status AND (lead_generation.first_appointment_date BETWEEN :min ANd :max) 

Query query = em.createQuery("SELECT * FROM lead_generation lg INNER_JOIN lg.leads l WHERE lg.generated_employee_id = :id AND l.status= :status AND (lead_generation.first_appointment_date BETWEEN :min ANd :max)"); 
query.setParameter("id", "111"); 
query.setParameter("status", "CONVERTED_LEAD"); 
query.setParameter("min", DATE_FORMAT(NOW() ,'%Y-%m-01')); 
query.setParameter("max", NOW()); 
List<lead_generation> lead_generations = (List<lead_generation>) query.getResultList(); 
0
以其他方式

,您可以使用nativeQuery,像这样:

@Query(value="SELECT * FROM lead_generation lg, lead l WHERE lg.lg_code = l.lead_generation AND lg.generated_employee_id = ?1 AND l.status ='CONVERTED_LEAD' AND (first_appointment_date between DATE_FORMAT(NOW() ,'%Y-%m-01') AND NOW())",nativeQuery=true) 
List<User> findLeadGeneration(Integer id);