【问题标题】:convert a sql query into jpql (JPA)将 sql 查询转换为 jpql (JPA)
【发布时间】:2014-12-11 03:50:12
【问题描述】:

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

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() );

【问题讨论】:

    标签: java mysql hibernate jpa


    【解决方案1】:

    在其他方面,你可以使用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);
    

    【讨论】:

      【解决方案2】:

      确保lead_generation 有铅集合。每个对象“。”变量必须是对象的 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();
      

      【讨论】:

        猜你喜欢
        • 2011-09-29
        • 2021-10-09
        • 2011-06-12
        • 2019-07-13
        • 2013-09-17
        • 1970-01-01
        • 2017-10-29
        • 2016-07-06
        • 2011-03-25
        相关资源
        最近更新 更多