Bael 7648 (#16176)
* BAEL-7490 read write file in separate thread * Change the to try resources * Update the code to sync with article * added new module for get list entity in hibernate * Move the code to hibernate-queries module * simplify the code
This commit is contained in:
		
							parent
							
								
									c25f863bb2
								
							
						
					
					
						commit
						c957410b7e
					
				| @ -0,0 +1,40 @@ | |||||||
|  | package com.baeldung.hibernate.listentity.entity; | ||||||
|  | 
 | ||||||
|  | import java.util.List; | ||||||
|  | import jakarta.persistence.*; | ||||||
|  | 
 | ||||||
|  | @Entity | ||||||
|  | public class Department { | ||||||
|  |     @Id | ||||||
|  |     @GeneratedValue(strategy = GenerationType.IDENTITY) | ||||||
|  |     private Long id; | ||||||
|  | 
 | ||||||
|  |     private String name; | ||||||
|  | 
 | ||||||
|  |     @OneToMany(mappedBy = "department", fetch = FetchType.EAGER) | ||||||
|  |     private List<Employee> employees; | ||||||
|  | 
 | ||||||
|  |     public Long getId() { | ||||||
|  |         return id; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public void setId(Long id) { | ||||||
|  |         this.id = id; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public String getName() { | ||||||
|  |         return name; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public void setName(String name) { | ||||||
|  |         this.name = name; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public List<Employee> getEmployees() { | ||||||
|  |         return employees; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public void setEmployees(List<Employee> employees) { | ||||||
|  |         this.employees = employees; | ||||||
|  |     } | ||||||
|  | } | ||||||
| @ -0,0 +1,41 @@ | |||||||
|  | package com.baeldung.hibernate.listentity.entity; | ||||||
|  | 
 | ||||||
|  | import jakarta.persistence.*; | ||||||
|  | 
 | ||||||
|  | @Entity | ||||||
|  | @NamedQuery(name = "findAllEmployees", query = "SELECT e FROM Employee e") | ||||||
|  | @NamedQuery(name = "findEmployeesByDepartment", query = "SELECT e FROM Employee e WHERE e.department = :department ORDER BY e.lastName ASC") | ||||||
|  | public class Employee { | ||||||
|  | 
 | ||||||
|  |     @Id | ||||||
|  |     @GeneratedValue | ||||||
|  |     private Long id; | ||||||
|  | 
 | ||||||
|  |     private String lastName; | ||||||
|  | 
 | ||||||
|  |     private String department; | ||||||
|  | 
 | ||||||
|  |     public Long getId() { | ||||||
|  |         return id; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public void setId(Long id) { | ||||||
|  |         this.id = id; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public String getLastName() { | ||||||
|  |         return lastName; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public void setLastName(String lastName) { | ||||||
|  |         this.lastName = lastName; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public String getDepartment() { | ||||||
|  |         return department; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public void setDepartment(String department) { | ||||||
|  |         this.department = department; | ||||||
|  |     } | ||||||
|  | } | ||||||
| @ -0,0 +1,88 @@ | |||||||
|  | package com.baeldung.hibernate.listentity.service; | ||||||
|  | 
 | ||||||
|  | import java.util.Collections; | ||||||
|  | import java.util.List; | ||||||
|  | 
 | ||||||
|  | import jakarta.persistence.*; | ||||||
|  | import jakarta.persistence.criteria.CriteriaBuilder; | ||||||
|  | import jakarta.persistence.criteria.CriteriaQuery; | ||||||
|  | import jakarta.persistence.criteria.Path; | ||||||
|  | import jakarta.persistence.criteria.Predicate; | ||||||
|  | import jakarta.persistence.criteria.Root; | ||||||
|  | 
 | ||||||
|  | import org.springframework.stereotype.Service; | ||||||
|  | 
 | ||||||
|  | import com.baeldung.hibernate.listentity.entity.Department; | ||||||
|  | import com.baeldung.hibernate.listentity.entity.Employee; | ||||||
|  | 
 | ||||||
|  | @Service | ||||||
|  | public class EmployeeService { | ||||||
|  | 
 | ||||||
|  |     @PersistenceContext | ||||||
|  |     private EntityManager entityManager; | ||||||
|  | 
 | ||||||
|  |     public List<Employee> getAllEmployeesUsingJPQL() { | ||||||
|  |         String jpqlQuery = "SELECT e FROM Employee e"; | ||||||
|  |         Query query = entityManager.createQuery(jpqlQuery, Employee.class); | ||||||
|  |         return query.getResultList(); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public List<Employee> getAllEmployeesByDepartmentUsingJPQL() { | ||||||
|  |         String jpqlQuery = "SELECT e FROM Employee e WHERE e.department = 'Engineering' ORDER BY e.lastName ASC"; | ||||||
|  |         Query query = entityManager.createQuery(jpqlQuery, Employee.class); | ||||||
|  | 
 | ||||||
|  |         return query.getResultList(); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public List<Employee> getAllEmployeesUsingNamedQuery() { | ||||||
|  |         Query query = entityManager.createNamedQuery("findAllEmployees", Employee.class); | ||||||
|  | 
 | ||||||
|  |         return query.getResultList(); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public List<Employee> getAllEmployeesByDepartmentUsingNamedQuery(String department) { | ||||||
|  |         Query query = entityManager.createNamedQuery("findEmployeesByDepartment", Employee.class); | ||||||
|  |         query.setParameter("department", department); | ||||||
|  | 
 | ||||||
|  |         return query.getResultList(); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public List<Employee> getAllEmployeesUsingCriteriaAPI() { | ||||||
|  |         CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder(); | ||||||
|  |         CriteriaQuery<Employee> criteriaQuery = criteriaBuilder.createQuery(Employee.class); | ||||||
|  |         Root<Employee> employeeRoot = criteriaQuery.from(Employee.class); | ||||||
|  | 
 | ||||||
|  |         criteriaQuery.select(employeeRoot); | ||||||
|  |         Query query = entityManager.createQuery(criteriaQuery); | ||||||
|  | 
 | ||||||
|  |         return query.getResultList(); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public List<Employee> getAllEmployeesByDepartmentUsingCriteriaAPI(String department) { | ||||||
|  |         CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder(); | ||||||
|  |         CriteriaQuery<Employee> criteriaQuery = criteriaBuilder.createQuery(Employee.class); | ||||||
|  |         Root<Employee> employeeRoot = criteriaQuery.from(Employee.class); | ||||||
|  |         Predicate departmentPredicate = criteriaBuilder.equal(employeeRoot.get("department"), department); | ||||||
|  |         Path<Object> sortByPath = employeeRoot.get("lastName"); | ||||||
|  |         criteriaQuery.orderBy(criteriaBuilder.asc(sortByPath)); | ||||||
|  |         criteriaQuery.select(employeeRoot) | ||||||
|  |             .where(departmentPredicate); | ||||||
|  |         Query query = entityManager.createQuery(criteriaQuery); | ||||||
|  | 
 | ||||||
|  |         return query.getResultList(); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public List<Employee> getAllEmployeesByDepartmentUsingOneToManyAnnotations(String departmentName) { | ||||||
|  |         try { | ||||||
|  |             // Retrieve the department by its name | ||||||
|  |             Department department = entityManager.createQuery("SELECT d FROM Department d WHERE d.name = :name", Department.class) | ||||||
|  |                 .setParameter("name", departmentName) | ||||||
|  |                 .getSingleResult(); | ||||||
|  | 
 | ||||||
|  |             // Return the list of employees associated with the department | ||||||
|  |             return department.getEmployees(); | ||||||
|  |         } catch (NoResultException e) { | ||||||
|  |             return Collections.emptyList(); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user