Код: Выделить всё
UserКод: Выделить всё
com/example/realestate/models/CustomUser.javaКод: Выделить всё
@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;
// ...
@ManyToMany(mappedBy = "saves")
private List savedListings;
// ...
}
Код: Выделить всё
com/example/realestate/models/Listing.javaКод: Выделить всё
@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 saves = new ArrayList();
// ...
}
Код: Выделить всё
com/example/realestate/repositories/ListingRepository.javaКод: Выделить всё
// 1 Parametrized queries
public interface ListingRepository extends JpaRepository, JpaSpecificationExecutor {
// ...
Page findByUserInSaves(CustomUser user, Pageable pageable);
}