结果集中的别名列

时间:2017-10-11 17:08:42

标签: spring jpa

我在后端spring项目中有一个查询,在那里我创建了一个名为agent_id的字段别名,但我在Model中没有该列。在前端表格视图中将其显示为字段的最佳方法是什么? 这是查询:

 Query query = em.createNativeQuery("SELECT" +
                "  ips.*, " +
                "  s.mls_id AS imported," +
                "  p.INTEGRATOR_SALES_ASSOCIATED_ID AS agent_id " +
                "FROM test1.ilist_property_summary ips " +
                "  LEFT JOIN test1.statistics s ON s.mls_id = ips.INTEGRATOR_PROPERTY_ID " +
                "  LEFT JOIN test1.person p ON p.INTEGRATOR_SALES_ASSOCIATED_ID = ips.INTEGRATOR_SALES_ASSOCIATED_ID " +
                "WHERE ips.AGENCY_ID = :agencyId AND (s.statistics_type = 1 OR s.statistics_type IS NULL) AND ips.ORIG_LISTING_DATE BETWEEN :startDate AND :endDate");

        query.setParameter("agencyId", agencyId)
                .setParameter("startDate", DateUtil.asDate(startDate), TemporalType.DATE)
                .setParameter("endDate", DateUtil.asDate(endDate), TemporalType.DATE);


        return (List<PropertyVO>) query.getResultList().stream().map(o -> processProperty((Object[]) o)).collect(Collectors.<PropertyVO>toList());

我已经有一个显示agent_id的字段,但是没有使用表Person的相同字段获取。我需要检索从左连接获取的字段代理ID别名。

1 个答案:

答案 0 :(得分:1)

我采用了另一种方法:

Query query = em.createNativeQuery("SELECT" +
                "  ips.id, ips.agency_id, ips.integrator_property_id, ips.orig_listing_date, ips.contract_type," +
                "  ips.transaction_type, ips.current_listing_price, ips.current_listing_currency, ips.apartment_number, ips.commercial_residential," +
                "  ips.commission_percent, ips.commission_value, ips.property_type, ips.street_name, ips.street_number," +
                "  s.mls_id AS imported," +
                "  p.INTEGRATOR_SALES_ASSOCIATED_ID  AS INTEGRATOR_SALES_ASSOCIATED_ID" +
                "  FROM test1.ilist_property_summary ips " +
                "  LEFT JOIN test1.statistics s ON s.mls_id = ips.INTEGRATOR_PROPERTY_ID " +
                "  LEFT JOIN test1.person p ON p.INTEGRATOR_SALES_ASSOCIATED_ID = ips.INTEGRATOR_SALES_ASSOCIATED_ID " +
                "WHERE ips.AGENCY_ID = :agencyId AND (s.statistics_type = 1 OR s.statistics_type IS NULL) AND ips.ORIG_LISTING_DATE BETWEEN :startDate AND :endDate ");

此处字段

INTEGRATOR_SALES_ASSOCIATED_ID

取自表p,而不是来自ips。我刚刚选择了特定字段,因此可以从另一个表中获取。