Many-to-many: Find all Listings saved by an User

1 day ago 3
ARTICLE AD BOX

User entity:

@Builder @NoArgsConstructor @AllArgsConstructor @Accessors(chain = true) @Data @Entity(name = "users") // 4 Authentication and authorization public class CustomUser { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private long id; // ... @OneToMany(mappedBy = "poster", cascade = CascadeType.ALL) private List<Listing> listings; @ManyToMany(mappedBy = "saves") private List<Listing> savedListings; public String getFullName() { return this.firstName + " " + this.lastName; } @Override public String toString() { return this.email.split("@")[0]; } }

Listing entity:

@Builder @NoArgsConstructor @AllArgsConstructor @Accessors(chain = true) @Data @Entity(name = "listings") public class Listing { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private long id; // ... @ManyToMany @Builder.Default @JoinTable(name = "listingSaves", joinColumns = @JoinColumn(name = "listingId"), inverseJoinColumns = @JoinColumn(name = "userId")) private List<CustomUser> saves = new ArrayList<>(); // ... }

So User and Listing are in many-to-many relationship, which means that many users can save/bookmark/like many listings. I want to get all listing saved by an user with a repository query method. I have tried it this way, but I get Cannot resolve property 'userInSaves'.

// 1 Parametrized queries public interface ListingRepository extends JpaRepository<Listing, Long>, JpaSpecificationExecutor<Listing> { // ... Page<Listing> findByUserInSaves(CustomUser user, Pageable pageable); }
Read Entire Article