Skip to content

Commit 89373cd

Browse files
forketyforkpivovarit
authored andcommitted
Samples for the Intro to QueryDSL article, merged with existing querydsl module. Updated module dependencies. (eugenp#476)
1 parent 010c6b3 commit 89373cd

7 files changed

Lines changed: 378 additions & 60 deletions

File tree

querydsl/pom.xml

Lines changed: 20 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -14,30 +14,25 @@
1414

1515
<properties>
1616
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
17-
<java.version>1.6</java.version>
18-
<junit.version>4.10</junit.version>
19-
<spring.version>3.1.0.RELEASE</spring.version>
20-
<hibernate.version>4.3.11.Final</hibernate.version>
21-
<querydsl.version>2.5.0</querydsl.version>
22-
<slf4j.version>1.5.10</slf4j.version>
17+
<java.version>1.8</java.version>
18+
<junit.version>4.12</junit.version>
19+
<spring.version>4.3.1.RELEASE</spring.version>
20+
<hibernate.version>5.2.1.Final</hibernate.version>
21+
<querydsl.version>4.1.3</querydsl.version>
22+
<slf4j.version>1.7.21</slf4j.version>
2323
</properties>
2424

2525
<dependencies>
2626
<!-- QueryDSL -->
27-
<dependency>
28-
<groupId>com.mysema.querydsl</groupId>
29-
<artifactId>querydsl-core</artifactId>
30-
<version>${querydsl.version}</version>
31-
</dependency>
3227

3328
<dependency>
34-
<groupId>com.mysema.querydsl</groupId>
29+
<groupId>com.querydsl</groupId>
3530
<artifactId>querydsl-jpa</artifactId>
3631
<version>${querydsl.version}</version>
3732
</dependency>
3833

3934
<dependency>
40-
<groupId>com.mysema.querydsl</groupId>
35+
<groupId>com.querydsl</groupId>
4136
<artifactId>querydsl-apt</artifactId>
4237
<version>${querydsl.version}</version>
4338
<scope>provided</scope>
@@ -53,7 +48,7 @@
5348

5449
<dependency>
5550
<groupId>org.hibernate.javax.persistence</groupId>
56-
<artifactId>hibernate-jpa-2.0-api</artifactId>
51+
<artifactId>hibernate-jpa-2.1-api</artifactId>
5752
<version>1.0.0.Final</version>
5853
<scope>compile</scope>
5954
</dependency>
@@ -69,16 +64,16 @@
6964
<dependency>
7065
<groupId>commons-pool</groupId>
7166
<artifactId>commons-pool</artifactId>
72-
<version>1.5.5</version>
67+
<version>1.6</version>
7368
<type>jar</type>
7469
<scope>compile</scope>
7570
</dependency>
7671

7772
<!-- HSQLDB Dependencies -->
7873
<dependency>
7974
<groupId>org.hsqldb</groupId>
80-
<artifactId>hsqldb-j5</artifactId>
81-
<version>2.2.4</version>
75+
<artifactId>hsqldb</artifactId>
76+
<version>2.3.4</version>
8277
</dependency>
8378

8479
<!-- Spring Dependencies -->
@@ -118,27 +113,16 @@
118113

119114
<!-- Logging -->
120115
<dependency>
121-
<groupId>org.slf4j</groupId>
122-
<artifactId>slf4j-api</artifactId>
123-
<version>${slf4j.version}</version>
116+
<groupId>ch.qos.logback</groupId>
117+
<artifactId>logback-classic</artifactId>
118+
<version>1.1.7</version>
124119
</dependency>
125120
<dependency>
126121
<groupId>org.slf4j</groupId>
127122
<artifactId>jcl-over-slf4j</artifactId>
128123
<version>${slf4j.version}</version>
129124
<scope>runtime</scope>
130125
</dependency>
131-
<dependency>
132-
<groupId>org.slf4j</groupId>
133-
<artifactId>slf4j-log4j12</artifactId>
134-
<version>${slf4j.version}</version>
135-
<scope>runtime</scope>
136-
</dependency>
137-
<dependency>
138-
<groupId>log4j</groupId>
139-
<artifactId>log4j</artifactId>
140-
<version>1.2.16</version>
141-
</dependency>
142126

143127
<!-- Test Dependencies -->
144128
<dependency>
@@ -157,7 +141,7 @@
157141
<plugin>
158142
<groupId>org.apache.maven.plugins</groupId>
159143
<artifactId>maven-compiler-plugin</artifactId>
160-
<version>2.3.2</version>
144+
<version>3.5.1</version>
161145
<configuration>
162146
<source>${java.version}</source>
163147
<target>${java.version}</target>
@@ -168,16 +152,16 @@
168152
<!-- QueryDSL plugin -->
169153
<plugin>
170154
<groupId>com.mysema.maven</groupId>
171-
<artifactId>maven-apt-plugin</artifactId>
172-
<version>1.0.3</version>
155+
<artifactId>apt-maven-plugin</artifactId>
156+
<version>1.1.3</version>
173157
<executions>
174158
<execution>
175159
<goals>
176160
<goal>process</goal>
177161
</goals>
178162
<configuration>
179-
<outputDirectory>target/metamodel</outputDirectory>
180-
<processor>com.mysema.query.apt.jpa.JPAAnnotationProcessor</processor>
163+
<outputDirectory>target/generated-sources/java</outputDirectory>
164+
<processor>com.querydsl.apt.jpa.JPAAnnotationProcessor</processor>
181165
</configuration>
182166
</execution>
183167
</executions>

querydsl/src/main/java/org/baeldung/dao/PersonDaoImpl.java

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@
1010
import org.baeldung.entity.QPerson;
1111
import org.springframework.stereotype.Repository;
1212

13-
import com.mysema.query.group.GroupBy;
14-
import com.mysema.query.jpa.impl.JPAQuery;
13+
import com.querydsl.core.group.GroupBy;
14+
import com.querydsl.jpa.impl.JPAQuery;
1515

1616
@Repository
1717
public class PersonDaoImpl implements PersonDao {
@@ -27,39 +27,39 @@ public Person save(final Person person) {
2727

2828
@Override
2929
public List<Person> findPersonsByFirstnameQueryDSL(final String firstname) {
30-
final JPAQuery query = new JPAQuery(em);
30+
final JPAQuery<Person> query = new JPAQuery<>(em);
3131
final QPerson person = QPerson.person;
3232

33-
return query.from(person).where(person.firstname.eq(firstname)).list(person);
33+
return query.from(person).where(person.firstname.eq(firstname)).fetch();
3434
}
3535

3636
@Override
3737
public List<Person> findPersonsByFirstnameAndSurnameQueryDSL(final String firstname, final String surname) {
38-
final JPAQuery query = new JPAQuery(em);
38+
final JPAQuery<Person> query = new JPAQuery<>(em);
3939
final QPerson person = QPerson.person;
4040

41-
return query.from(person).where(person.firstname.eq(firstname).and(person.surname.eq(surname))).list(person);
41+
return query.from(person).where(person.firstname.eq(firstname).and(person.surname.eq(surname))).fetch();
4242
}
4343

4444
@Override
4545
public List<Person> findPersonsByFirstnameInDescendingOrderQueryDSL(final String firstname) {
46-
final JPAQuery query = new JPAQuery(em);
46+
final JPAQuery<Person> query = new JPAQuery<>(em);
4747
final QPerson person = QPerson.person;
4848

49-
return query.from(person).where(person.firstname.eq(firstname)).orderBy(person.surname.desc()).list(person);
49+
return query.from(person).where(person.firstname.eq(firstname)).orderBy(person.surname.desc()).fetch();
5050
}
5151

5252
@Override
5353
public int findMaxAge() {
54-
final JPAQuery query = new JPAQuery(em);
54+
final JPAQuery<Person> query = new JPAQuery<>(em);
5555
final QPerson person = QPerson.person;
5656

57-
return query.from(person).list(person.age.max()).get(0);
57+
return query.from(person).select(person.age.max()).fetchFirst();
5858
}
5959

6060
@Override
6161
public Map<String, Integer> findMaxAgeByName() {
62-
final JPAQuery query = new JPAQuery(em);
62+
final JPAQuery<Person> query = new JPAQuery<>(em);
6363
final QPerson person = QPerson.person;
6464

6565
return query.from(person).transform(GroupBy.groupBy(person.firstname).as(GroupBy.max(person.age)));
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
/*
2+
* (c) Центр ИТ, 2016. Все права защищены.
3+
*/
4+
package org.baeldung.querydsl.intro.entities;
5+
6+
import javax.persistence.Entity;
7+
import javax.persistence.GeneratedValue;
8+
import javax.persistence.Id;
9+
import javax.persistence.ManyToOne;
10+
11+
@Entity
12+
public class BlogPost {
13+
14+
@Id
15+
@GeneratedValue
16+
private Long id;
17+
18+
private String title;
19+
20+
private String body;
21+
22+
@ManyToOne
23+
private User user;
24+
25+
public Long getId() {
26+
return id;
27+
}
28+
29+
public void setId(Long id) {
30+
this.id = id;
31+
}
32+
33+
public String getTitle() {
34+
return title;
35+
}
36+
37+
public void setTitle(String code) {
38+
this.title = code;
39+
}
40+
41+
public String getBody() {
42+
return body;
43+
}
44+
45+
public void setBody(String body) {
46+
this.body = body;
47+
}
48+
49+
public User getUser() {
50+
return user;
51+
}
52+
53+
public void setUser(User user) {
54+
this.user = user;
55+
}
56+
}
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
/*
2+
* (c) Центр ИТ, 2016. Все права защищены.
3+
*/
4+
package org.baeldung.querydsl.intro.entities;
5+
6+
import java.util.HashSet;
7+
import java.util.Set;
8+
import javax.persistence.*;
9+
10+
@Entity
11+
public class User {
12+
13+
@Id
14+
@GeneratedValue
15+
private Long id;
16+
17+
private String login;
18+
19+
private Boolean disabled;
20+
21+
@OneToMany(cascade = CascadeType.PERSIST, mappedBy = "user")
22+
private Set<BlogPost> blogPosts = new HashSet<>(0);
23+
24+
public Long getId() {
25+
return id;
26+
}
27+
28+
public void setId(Long id) {
29+
this.id = id;
30+
}
31+
32+
public String getLogin() {
33+
return login;
34+
}
35+
36+
public void setLogin(String name) {
37+
this.login = name;
38+
}
39+
40+
public Set<BlogPost> getBlogPosts() {
41+
return blogPosts;
42+
}
43+
44+
public void setBlogPosts(Set<BlogPost> blogPosts) {
45+
this.blogPosts = blogPosts;
46+
}
47+
48+
public Boolean getDisabled() {
49+
return disabled;
50+
}
51+
52+
public void setDisabled(Boolean disabled) {
53+
this.disabled = disabled;
54+
}
55+
}

querydsl/src/main/resources/META-INF/persistence.xml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,17 @@
1616
</properties>
1717
</persistence-unit>
1818

19+
<!-- PersistenceUnit for Intro to QueryDSL -->
20+
<persistence-unit name="org.baeldung.querydsl.intro">
21+
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
22+
<properties>
23+
<property name="hibernate.connection.driver_class" value="org.hsqldb.jdbcDriver"/>
24+
<property name="hibernate.connection.url" value="jdbc:hsqldb:mem:test"/>
25+
<property name="hibernate.connection.username" value="sa"/>
26+
<property name="hibernate.connection.password" value=""/>
27+
<property name="hibernate.hbm2ddl.auto" value="update"/>
28+
<property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect" />
29+
</properties>
30+
</persistence-unit>
31+
1932
</persistence>
Lines changed: 8 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,9 @@
11
<?xml version="1.0" encoding="UTF-8"?>
2-
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd" >
3-
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
4-
5-
<!-- Appenders -->
6-
<appender name="console" class="org.apache.log4j.ConsoleAppender">
7-
<param name="Target" value="System.out" />
8-
<layout class="org.apache.log4j.PatternLayout">
9-
<param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} [%t] %-5p: %c - %m%n" />
2+
<configuration>
3+
4+
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
5+
<layout class="ch.qos.logback.classic.PatternLayout">
6+
<Pattern>%d{yyyy-MM-dd HH:mm:ss} [%t] %-5p: %c - %m%n</Pattern>
107
</layout>
118
</appender>
129

@@ -33,10 +30,8 @@
3330
<level value="warn" />
3431
</logger>
3532

36-
<!-- Root Logger -->
37-
<root>
38-
<priority value="warn" />
39-
<appender-ref ref="console" />
33+
<root level="warn">
34+
<appender-ref ref="STDOUT"/>
4035
</root>
4136

42-
</log4j:configuration>
37+
</configuration>

0 commit comments

Comments
 (0)