User сущность:
@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 listings;
@ManyToMany(mappedBy = "saves")
private List savedListings;
public String getFullName() {
return this.firstName + " " + this.lastName;
}
@Override
public String toString() {
return this.email.split("@")[0];
}
}
Listing сущность:
@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();
// ...
}
Таким образом, пользователь и листинг находятся в отношениях «многие ко многим», что означает, что многие пользователи могут сохранять, добавлять в закладки или лайкать множество списков. Я хочу получить все списки, сохраненные пользователем, с помощью метода запроса к репозиторию. Я пробовал это таким образом, но получаю сообщение «Невозможно разрешить свойство userInSaves».
// 1 Parametrized queries
public interface ListingRepository extends JpaRepository, JpaSpecificationExecutor {
// ...
Page findByUserInSaves(CustomUser user, Pageable pageable);
}