Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jpa 在Querydsl中选择不同的字段_Jpa_Eclipselink_Querydsl - Fatal编程技术网

Jpa 在Querydsl中选择不同的字段

Jpa 在Querydsl中选择不同的字段,jpa,eclipselink,querydsl,Jpa,Eclipselink,Querydsl,我想问一下如何在Querydsl 4中的字段上选择Distinct。执行此SQL请求的最佳方法是什么: SELECT DISTINCT ON (company_id, EXTRACT(MONTH FROM createddt), EXTRACT(YEAR FROM createddt)) id, createddt FROM companystats ORDER BY company_id, EXTRACT(MONTH FROM createddt) DESC,

我想问一下如何在Querydsl 4中的字段上选择Distinct。执行此SQL请求的最佳方法是什么:

SELECT DISTINCT ON 
    (company_id, EXTRACT(MONTH FROM createddt), EXTRACT(YEAR FROM createddt)) id, 
    createddt 
FROM companystats 
ORDER BY company_id, 
    EXTRACT(MONTH FROM createddt) DESC,
    EXTRACT(YEAR FROM createddt) DESC,
    createddt DESC

谢谢。

您的SQL看起来像Postgres查询。因此,最好的方法是在
com.querydsl.sql.postgresql.PostgreSQLQuery
中使用
distinctOn

PostgreSQLQuery query = new PostgreSQLQuery(con);
query.select(companystats.id, companystats.createddt)
    .distinctOn(companystats.company_id, 
        companystats.createddt.month(), companystats.createddt.year())
    .from(companystats)
    .orderBy(companystats.createddt.month().desc(), 
             companystats.createddt.year().desc(),
             companystats.createddt.desc());

您的SQL看起来像Postgres查询。因此,最好的方法是在
com.querydsl.sql.postgresql.PostgreSQLQuery
中使用
distinctOn

PostgreSQLQuery query = new PostgreSQLQuery(con);
query.select(companystats.id, companystats.createddt)
    .distinctOn(companystats.company_id, 
        companystats.createddt.month(), companystats.createddt.year())
    .from(companystats)
    .orderBy(companystats.createddt.month().desc(), 
             companystats.createddt.year().desc(),
             companystats.createddt.desc());