diff --git a/querydsl-jpa/src/main/java/com/querydsl/jpa/EclipseLinkTemplates.java b/querydsl-jpa/src/main/java/com/querydsl/jpa/EclipseLinkTemplates.java index 1c95fecf1..60ed00e1d 100644 --- a/querydsl-jpa/src/main/java/com/querydsl/jpa/EclipseLinkTemplates.java +++ b/querydsl-jpa/src/main/java/com/querydsl/jpa/EclipseLinkTemplates.java @@ -82,6 +82,7 @@ public class EclipseLinkTemplates extends JPQLTemplates { add(Ops.DateTimeOps.YEAR, "extract(year from {0})"); add(Ops.DateTimeOps.YEAR_MONTH, "extract(year from {0}) * 100 + extract(month from {0})"); + add(Ops.DateTimeOps.YEAR_WEEK, "extract(year from {0}) * 100 + extract(week from {0})"); } diff --git a/querydsl-jpa/src/main/java/com/querydsl/jpa/JPQLTemplates.java b/querydsl-jpa/src/main/java/com/querydsl/jpa/JPQLTemplates.java index fdbe9625e..b89e2dcc0 100644 --- a/querydsl-jpa/src/main/java/com/querydsl/jpa/JPQLTemplates.java +++ b/querydsl-jpa/src/main/java/com/querydsl/jpa/JPQLTemplates.java @@ -131,6 +131,7 @@ public class JPQLTemplates extends Templates { add(Ops.DateTimeOps.YEAR, "year({0})"); add(Ops.DateTimeOps.YEAR_MONTH, "year({0}) * 100 + month({0})", Precedence.ARITH_LOW); + add(Ops.DateTimeOps.YEAR_WEEK, "year({0}) * 100 + week({0})", Precedence.ARITH_LOW); // path types add(PathType.PROPERTY, "{0}.{1s}"); diff --git a/querydsl-jpa/src/test/java/com/querydsl/jpa/AbstractJPATest.java b/querydsl-jpa/src/test/java/com/querydsl/jpa/AbstractJPATest.java index 7fa0ee4c1..463d1dad1 100644 --- a/querydsl-jpa/src/test/java/com/querydsl/jpa/AbstractJPATest.java +++ b/querydsl-jpa/src/test/java/com/querydsl/jpa/AbstractJPATest.java @@ -547,13 +547,24 @@ public abstract class AbstractJPATest { assertEquals(2000, query().from(cat).select(cat.birthdate.year()).fetchFirst().intValue()); assertEquals(200002, query().from(cat).select(cat.birthdate.yearMonth()).fetchFirst().intValue()); assertEquals(2, query().from(cat).select(cat.birthdate.month()).fetchFirst().intValue()); - //query().from(cat).select(cat.birthdate.week()); assertEquals(2, query().from(cat).select(cat.birthdate.dayOfMonth()).fetchFirst().intValue()); assertEquals(3, query().from(cat).select(cat.birthdate.hour()).fetchFirst().intValue()); assertEquals(4, query().from(cat).select(cat.birthdate.minute()).fetchFirst().intValue()); assertEquals(0, query().from(cat).select(cat.birthdate.second()).fetchFirst().intValue()); } + @Test + public void Date_YearWeek() { + int value = query().from(cat).select(cat.birthdate.yearWeek()).fetchFirst(); + assertTrue(value == 200006 || value == 200005); + } + + @Test + public void Date_Week() { + int value = query().from(cat).select(cat.birthdate.week()).fetchFirst(); + assertTrue(value == 6 || value == 5); + } + @Test @ExcludeIn(ORACLE) public void Divide() { @@ -700,8 +711,8 @@ public abstract class AbstractJPATest { .from(author) .join(author.books, book) .transform(GroupBy - .groupBy(author.id) - .as(GroupBy.list(QPair.create(book.id, book.title)))); + .groupBy(author.id) + .as(GroupBy.list(QPair.create(book.id, book.title)))); for (Entry>> entry : map.entrySet()) { System.out.println("author = " + entry.getKey()); @@ -888,7 +899,7 @@ public abstract class AbstractJPATest { @Test public void Limit_and_offset() { - List names3 = Arrays.asList("Felix123","Mary_123"); + List names3 = Arrays.asList("Felix123", "Mary_123"); assertEquals(names3, query().from(cat).orderBy(cat.name.asc()).limit(2).offset(2).select(cat.name).fetch()); } @@ -1136,16 +1147,16 @@ public abstract class AbstractJPATest { @NoBatooJPA public void Order_NullsFirst() { assertNull(query().from(cat) - .orderBy(cat.dateField.asc().nullsFirst()) - .select(cat.dateField).fetchFirst()); + .orderBy(cat.dateField.asc().nullsFirst()) + .select(cat.dateField).fetchFirst()); } @Test @NoBatooJPA public void Order_NullsLast() { assertNotNull(query().from(cat) - .orderBy(cat.dateField.asc().nullsLast()) - .select(cat.dateField).fetchFirst()); + .orderBy(cat.dateField.asc().nullsLast()) + .select(cat.dateField).fetchFirst()); } @Test @@ -1596,7 +1607,7 @@ public abstract class AbstractJPATest { @Test @NoOpenJPA public void Type_Order() { - assertEquals(Arrays.asList(10,1,2,3,4,5,6), + assertEquals(Arrays.asList(10, 1, 2, 3, 4, 5, 6), query().from(animal).orderBy(JPAExpressions.type(animal).asc(), animal.id.asc()) .select(animal.id).fetch()); }