Beyond CRUD: How easy-query Brings OLAP Superpowers to Your Java ORM
Most Java ORMs are built for CRUD. The moment you need window functions, conditional aggregation, or Top-N-per-group queries, you're dropped into raw SQL strings — losing type safety, IDE support, ...

Source: DEV Community
Most Java ORMs are built for CRUD. The moment you need window functions, conditional aggregation, or Top-N-per-group queries, you're dropped into raw SQL strings — losing type safety, IDE support, and cross-database portability in one fell swoop. Easy-Query takes a different approach. It's a Java/Kotlin ORM that treats analytical queries as first-class citizens, with a type-safe, chainable API that covers window functions, CASE WHEN, string aggregation, partition-based filtering, and more — all while generating correct SQL across 12+ database dialects. This article walks through easy-query's OLAP capabilities with real code examples and the SQL they produce. Window Functions: Full API, Not String Concatenation Most ORMs force you to write window functions as raw SQL. Easy-query provides a complete, type-safe API. ROW_NUMBER / RANK / DENSE_RANK entityQuery.queryable(BlogEntity.class) .select(b -> Select.PART.of( b, b.expression().rowNumberOver() .partitionBy(b.title()) .orderBy(b.cre