Skip to content

Commit 1ce8895

Browse files
mayank4allMayank Agarwal
andauthored
Bael 5438 (#12176)
* [BAEL-5438] Added Criteria Queries for Employee * [BAEL-5438] Added tests and entities for named queries and criteria queries * [BAEL-5438] Removed unused sorting files * [BAEL-5438] Ignored spring context test * BAEL-5438 Indented with 4 spaces Co-authored-by: Mayank Agarwal <mayankaggarwal@zeta.tech>
1 parent 66cca46 commit 1ce8895

6 files changed

Lines changed: 156 additions & 147 deletions

File tree

persistence-modules/hibernate-queries/src/main/java/com/baeldung/hibernate/criteria/model/Employee.java

Lines changed: 64 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -3,74 +3,81 @@
33
import java.io.Serializable;
44
import javax.persistence.Entity;
55

6-
@org.hibernate.annotations.NamedQueries({ @org.hibernate.annotations.NamedQuery(name = "Employee_findByEmployeeId", query = "from Employee where id = :employeeId"),
7-
@org.hibernate.annotations.NamedQuery(name = "Employee_findAllByEmployeeSalary", query = "from Employee where salary = :employeeSalary")})
8-
@org.hibernate.annotations.NamedNativeQueries({ @org.hibernate.annotations.NamedNativeQuery(name = "Employee_FindByEmployeeId", query = "select * from employee emp where employeeId=:employeeId", resultClass = Employee.class)})
6+
@org.hibernate.annotations.NamedQueries({
7+
@org.hibernate.annotations.NamedQuery(name = "Employee_findByEmployeeId", query = "from Employee where id = :employeeId"),
8+
@org.hibernate.annotations.NamedQuery(name = "Employee_findAllByEmployeeSalary", query = "from Employee where salary = :employeeSalary")})
9+
@org.hibernate.annotations.NamedNativeQueries({
10+
@org.hibernate.annotations.NamedNativeQuery(name = "Employee_FindByEmployeeId", query = "select * from employee emp where employeeId=:employeeId", resultClass = Employee.class)})
911
@Entity
1012
public class Employee implements Serializable {
1113

12-
private static final long serialVersionUID = 1L;
13-
private Integer id;
14-
private String name;
15-
private Long salary;
14+
private static final long serialVersionUID = 1L;
15+
private Integer id;
16+
private String name;
17+
private Long salary;
1618

17-
// constructors
18-
public Employee() {
19-
}
19+
// constructors
20+
public Employee() {
21+
}
2022

21-
public Employee(final Integer id, final String name, final Long salary) {
22-
super();
23-
this.id = id;
24-
this.name = name;
25-
this.salary = salary;
26-
}
23+
public Employee(final Integer id, final String name, final Long salary) {
24+
super();
25+
this.id = id;
26+
this.name = name;
27+
this.salary = salary;
28+
}
2729

28-
@Override
29-
public int hashCode() {
30-
final int prime = 31;
31-
int result = 1;
32-
result = prime * result + ((id == null) ? 0 : id.hashCode());
33-
return result;
34-
}
30+
@Override
31+
public int hashCode() {
32+
final int prime = 31;
33+
int result = 1;
34+
result = prime * result + ((id == null) ? 0 : id.hashCode());
35+
return result;
36+
}
3537

36-
@Override
37-
public boolean equals(final Object obj) {
38-
if (this == obj)
39-
return true;
40-
if (obj == null)
41-
return false;
42-
if (getClass() != obj.getClass())
43-
return false;
44-
final Employee other = (Employee) obj;
45-
if (id == null) {
46-
if (other.id != null)
47-
return false;
48-
} else if (!id.equals(other.id))
49-
return false;
50-
return true;
51-
}
38+
@Override
39+
public boolean equals(final Object obj) {
40+
if (this == obj) {
41+
return true;
42+
}
43+
if (obj == null) {
44+
return false;
45+
}
46+
if (getClass() != obj.getClass()) {
47+
return false;
48+
}
49+
final Employee other = (Employee) obj;
50+
if (id == null) {
51+
if (other.id != null) {
52+
return false;
53+
}
54+
} else if (!id.equals(other.id)) {
55+
return false;
56+
}
57+
return true;
58+
}
5259

53-
public Integer getId() {
54-
return id;
55-
}
60+
public Integer getId() {
61+
return id;
62+
}
5663

57-
public void setId(Integer id) {
58-
this.id = id;
59-
}
64+
public void setId(Integer id) {
65+
this.id = id;
66+
}
6067

61-
public String getName() {
62-
return name;
63-
}
68+
public String getName() {
69+
return name;
70+
}
6471

65-
public void setName(String name) {
66-
this.name = name;
67-
}
72+
public void setName(String name) {
73+
this.name = name;
74+
}
6875

69-
public Long getSalary() {
70-
return salary;
71-
}
76+
public Long getSalary() {
77+
return salary;
78+
}
7279

73-
public void setSalary(Long salary) {
74-
this.salary = salary;
75-
}
80+
public void setSalary(Long salary) {
81+
this.salary = salary;
82+
}
7683
}

persistence-modules/hibernate-queries/src/main/java/com/baeldung/hibernate/criteria/view/EmployeeCriteriaQueries.java

Lines changed: 28 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -11,35 +11,34 @@
1111

1212
public class EmployeeCriteriaQueries {
1313

14-
public List<Employee> getAllEmployees() {
15-
final Session session = HibernateUtil.getHibernateSession();
16-
final CriteriaBuilder cb = session.getCriteriaBuilder();
17-
final CriteriaQuery<Employee> cr = cb.createQuery(Employee.class);
18-
final Root<Employee> root = cr.from(Employee.class);
19-
cr.select(root);
20-
Query<Employee> query = session.createQuery(cr);
21-
List<Employee> results = query.getResultList();
22-
session.close();
23-
return results;
24-
}
25-
26-
// To get items having salary more than 50000
27-
public String[] greaterThanCriteria() {
28-
final Session session = HibernateUtil.getHibernateSession();
29-
final CriteriaBuilder cb = session.getCriteriaBuilder();
30-
final CriteriaQuery<Employee> cr = cb.createQuery(Employee.class);
31-
final Root<Employee> root = cr.from(Employee.class);
32-
cr.select(root)
33-
.where(cb.gt(root.get("salary"), 50000));
34-
Query<Employee> query = session.createQuery(cr);
35-
final List<Employee> greaterThanEmployeeList = query.getResultList();
36-
final String employeeWithGreaterSalary[] = new String[greaterThanEmployeeList.size()];
37-
for (int i = 0; i < greaterThanEmployeeList.size(); i++) {
38-
employeeWithGreaterSalary[i] = greaterThanEmployeeList.get(i)
39-
.getName();
14+
public List<Employee> getAllEmployees() {
15+
final Session session = HibernateUtil.getHibernateSession();
16+
final CriteriaBuilder cb = session.getCriteriaBuilder();
17+
final CriteriaQuery<Employee> cr = cb.createQuery(Employee.class);
18+
final Root<Employee> root = cr.from(Employee.class);
19+
cr.select(root);
20+
Query<Employee> query = session.createQuery(cr);
21+
List<Employee> results = query.getResultList();
22+
session.close();
23+
return results;
4024
}
41-
session.close();
42-
return employeeWithGreaterSalary;
43-
}
4425

26+
// To get items having salary more than 50000
27+
public String[] greaterThanCriteria() {
28+
final Session session = HibernateUtil.getHibernateSession();
29+
final CriteriaBuilder cb = session.getCriteriaBuilder();
30+
final CriteriaQuery<Employee> cr = cb.createQuery(Employee.class);
31+
final Root<Employee> root = cr.from(Employee.class);
32+
cr.select(root)
33+
.where(cb.gt(root.get("salary"), 50000));
34+
Query<Employee> query = session.createQuery(cr);
35+
final List<Employee> greaterThanEmployeeList = query.getResultList();
36+
final String employeeWithGreaterSalary[] = new String[greaterThanEmployeeList.size()];
37+
for (int i = 0; i < greaterThanEmployeeList.size(); i++) {
38+
employeeWithGreaterSalary[i] = greaterThanEmployeeList.get(i)
39+
.getName();
40+
}
41+
session.close();
42+
return employeeWithGreaterSalary;
43+
}
4544
}

persistence-modules/hibernate-queries/src/test/java/com/baeldung/hibernate/criteria/EmployeeCriteriaIntegrationTest.java

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -11,26 +11,26 @@
1111

1212
public class EmployeeCriteriaIntegrationTest {
1313

14-
final private EmployeeCriteriaQueries employeeCriteriaQueries = new EmployeeCriteriaQueries();
14+
final private EmployeeCriteriaQueries employeeCriteriaQueries = new EmployeeCriteriaQueries();
1515

16-
@Test
17-
public void testGreaterThanCriteriaQuery() {
18-
final Session session = HibernateUtil.getHibernateSession();
19-
final List<Employee> expectedGreaterThanList = session.createQuery("From Employee where salary>50000").list();
20-
final String expectedGreaterThanEmployees[] = new String[expectedGreaterThanList.size()];
21-
for (int i = 0; i < expectedGreaterThanList.size(); i++) {
22-
expectedGreaterThanEmployees[i] = expectedGreaterThanList.get(i).getName();
16+
@Test
17+
public void testGreaterThanCriteriaQuery() {
18+
final Session session = HibernateUtil.getHibernateSession();
19+
final List<Employee> expectedGreaterThanList = session.createQuery("From Employee where salary>50000").list();
20+
final String expectedGreaterThanEmployees[] = new String[expectedGreaterThanList.size()];
21+
for (int i = 0; i < expectedGreaterThanList.size(); i++) {
22+
expectedGreaterThanEmployees[i] = expectedGreaterThanList.get(i).getName();
23+
}
24+
session.close();
25+
assertArrayEquals(expectedGreaterThanEmployees, employeeCriteriaQueries.greaterThanCriteria());
2326
}
24-
session.close();
25-
assertArrayEquals(expectedGreaterThanEmployees, employeeCriteriaQueries.greaterThanCriteria());
26-
}
2727

28-
@Test
29-
public void testGetAllEmployeesQuery() {
30-
final Session session = HibernateUtil.getHibernateSession();
31-
final List<Employee> expectedSortCritEmployeeList = session.createQuery("From Employee").list();
32-
session.close();
33-
assertArrayEquals(expectedSortCritEmployeeList.toArray(), employeeCriteriaQueries.getAllEmployees().toArray());
34-
}
28+
@Test
29+
public void testGetAllEmployeesQuery() {
30+
final Session session = HibernateUtil.getHibernateSession();
31+
final List<Employee> expectedSortCritEmployeeList = session.createQuery("From Employee").list();
32+
session.close();
33+
assertArrayEquals(expectedSortCritEmployeeList.toArray(), employeeCriteriaQueries.getAllEmployees().toArray());
34+
}
3535

3636
}
Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,19 @@
11
<?xml version="1.0"?>
22
<!DOCTYPE hibernate-mapping PUBLIC
3-
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
4-
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
3+
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
4+
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
55
<hibernate-mapping>
6-
<class name="com.baeldung.hibernate.criteria.model.Employee" table="EMPLOYEE">
7-
<id name="id" type="java.lang.Integer">
8-
<column name="EMPLOYEE_ID" />
9-
<generator class="identity" />
10-
</id>
11-
<property name="salary" type="java.lang.Long">
12-
<column name="EMPLOYEE_SALARY" not-null="true" />
13-
</property>
14-
<property name="name" type="string">
15-
<column name="EMPLOYEE_NAME" not-null="true" />
16-
</property>
17-
</class>
6+
<class name="com.baeldung.hibernate.criteria.model.Employee" table="EMPLOYEE">
7+
<id name="id" type="java.lang.Integer">
8+
<column name="EMPLOYEE_ID" />
9+
<generator class="identity" />
10+
</id>
11+
<property name="salary" type="java.lang.Long">
12+
<column name="EMPLOYEE_SALARY" not-null="true" />
13+
</property>
14+
<property name="name" type="string">
15+
<column name="EMPLOYEE_NAME" not-null="true" />
16+
</property>
17+
</class>
1818

1919
</hibernate-mapping>

persistence-modules/spring-data-jpa-query-3/src/main/java/com/baeldung/spring/data/jpa/entity/Employee.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,12 @@
77
@Entity
88
public class Employee {
99

10-
@Id
11-
@GeneratedValue
12-
private Integer id;
10+
@Id
11+
@GeneratedValue
12+
private Integer id;
1313

14-
private String name;
14+
private String name;
1515

16-
private Long salary;
16+
private Long salary;
1717

1818
}

persistence-modules/spring-data-jpa-query-3/src/main/java/com/baeldung/spring/data/jpa/repository/EmployeeRepository.java

Lines changed: 27 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -9,29 +9,32 @@
99

1010
public interface EmployeeRepository extends JpaRepository<Employee, Integer> {
1111

12-
@Query(value = "SELECT e FROM Employee e")
13-
List<Employee> findAllEmployees(Sort sort);
14-
15-
@Query("SELECT e FROM Employee e WHERE e.salary = ?1")
16-
Employee findAllEmployeesWithSalary(Long salary);
17-
18-
@Query("SELECT e FROM Employee e WHERE e.name = ?1 and e.salary = ?2")
19-
Employee findUserByNameAndSalary(String name, Long salary);
20-
21-
@Query(
22-
value = "SELECT * FROM Employee e WHERE e.salary = ?1",
23-
nativeQuery = true)
24-
Employee findUserBySalaryNative(Long salary);
25-
26-
@Query("SELECT e FROM Employee e WHERE e.name = :name and e.salary = :salary")
27-
Employee findUserByEmployeeNameAndSalaryNamedParameters(
28-
@Param("name") String employeeName,
29-
@Param("salary") Long employeeSalary);
30-
31-
@Query(value = "SELECT * FROM Employee e WHERE e.name = :name and e.salary = :salary",
32-
nativeQuery = true)
33-
Employee findUserByNameAndSalaryNamedParamsNative(
34-
@Param("name") String employeeName,
35-
@Param("salary") Long employeeSalary);
12+
@Query(value = "SELECT e FROM Employee e")
13+
List<Employee> findAllEmployees(Sort sort);
14+
15+
@Query("SELECT e FROM Employee e WHERE e.salary = ?1")
16+
Employee findAllEmployeesWithSalary(Long salary);
17+
18+
@Query("SELECT e FROM Employee e WHERE e.name = ?1 and e.salary = ?2")
19+
Employee findUserByNameAndSalary(String name, Long salary);
20+
21+
@Query(
22+
value = "SELECT * FROM Employee e WHERE e.salary = ?1",
23+
nativeQuery = true
24+
)
25+
Employee findUserBySalaryNative(Long salary);
26+
27+
@Query("SELECT e FROM Employee e WHERE e.name = :name and e.salary = :salary")
28+
Employee findUserByEmployeeNameAndSalaryNamedParameters(
29+
@Param("name") String employeeName,
30+
@Param("salary") Long employeeSalary);
31+
32+
@Query(
33+
value = "SELECT * FROM Employee e WHERE e.name = :name and e.salary = :salary",
34+
nativeQuery = true
35+
)
36+
Employee findUserByNameAndSalaryNamedParamsNative(
37+
@Param("name") String employeeName,
38+
@Param("salary") Long employeeSalary);
3639

3740
}

0 commit comments

Comments
 (0)