🎓 Top 15 Udemy Courses (80-90% Discount): My Udemy Courses - Ramesh Fadatare — All my Udemy courses are real-time and project oriented courses.
▶️ Subscribe to My YouTube Channel (178K+ subscribers): Java Guides on YouTube
▶️ For AI, ChatGPT, Web, Tech, and Generative AI, subscribe to another channel: Ramesh Fadatare on YouTube
In Spring Data JPA, you can use the @Query annotation to define custom JPQL queries. When working with relationships between entities, you often need to use JOINs (e.g., INNER JOIN, LEFT JOIN) in your queries.
Create JPA Entities - User and Role
Suppose you have two entities, User and Role, and there's a many-to-many relationship between them:
User
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
@ManyToMany
@JoinTable(
name = "user_role",
joinColumns = @JoinColumn(name = "user_id"),
inverseJoinColumns = @JoinColumn(name = "role_id"))
private Set<Role> roles;
// getters, setters, etc.
}
Role
@Entity
public class Role {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String roleName;
@ManyToMany(mappedBy = "roles")
private Set<User> users;
// getters, setters, etc.
}
Create Repository
Now, if you want to retrieve users with a specific role using a custom query with an inner join, you can do something like this:public interface UserRepository extends JpaRepository<User, Long> {
@Query("SELECT u FROM User u INNER JOIN u.roles r WHERE r.roleName = :roleName")
List<User> findUsersByRoleName(@Param("roleName") String roleName);
}
In the @Query, we've used an inner join between the User entity and its roles attribute (which is a collection of Role entities). The :roleName is a named parameter that you can pass to the query method.
You can then call this method in your service or controller to get users by a specific role:
List<User> admins = userRepository.findUsersByRoleName("ADMIN");
This approach allows you to write custom queries using JPQL and leverage the power of joins, making it easy to fetch related data from the database.My Top and Bestseller Udemy Courses. The sale is going on with a 70 - 80% discount. The discount coupon has been added to each course below:
Build REST APIs with Spring Boot 4, Spring Security 7, and JWT
[NEW] Learn Apache Maven with IntelliJ IDEA and Java 25
ChatGPT + Generative AI + Prompt Engineering for Beginners
Spring 7 and Spring Boot 4 for Beginners (Includes 8 Projects)
Available in Udemy for Business
Building Real-Time REST APIs with Spring Boot - Blog App
Available in Udemy for Business
Building Microservices with Spring Boot and Spring Cloud
Available in Udemy for Business
Java Full-Stack Developer Course with Spring Boot and React JS
Available in Udemy for Business
Build 5 Spring Boot Projects with Java: Line-by-Line Coding
Testing Spring Boot Application with JUnit and Mockito
Available in Udemy for Business
Spring Boot Thymeleaf Real-Time Web Application - Blog App
Available in Udemy for Business
Master Spring Data JPA with Hibernate
Available in Udemy for Business
Spring Boot + Apache Kafka Course - The Practical Guide
Available in Udemy for Business
Comments
Post a Comment
Leave Comment