У меня есть две сущности:
@Entity
public class Customer {
@Id
@GeneratedValue
private int id;
@Column(nullable = false)
private String name;
@ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
private Collection<Coupon> coupons;
}
@Entity
public class Coupon {
@Id
@GeneratedValue
private int id;
@Column(nullable = false)
private String title;
@ManyToMany(mappedBy = "coupons")
private Collection<Customer> customers;
}
В базе данных есть три таблицы: customer
, coupon
и customer_coupons
, покупатель может приобрести купон, а после покупки таблицы customer_coupons
сохраняет customers_id
и coupons_id
(Клиент может иметь много купонов и купон может есть много клиентов).
Мне нужно как-то получить купон клиента по customerId
и couponId
из таблицы customer_coupons
. У меня есть интерфейс CouponRepository
:
@Repository
public interface CouponRepository extends JpaRepository<Coupon, Integer> {
@Query("SELECT c FROM Coupon c WHERE c.id IN (SELECT coupons.id FROM customer_coupons WHERE coupons_id = ?1 AND customer_id = ?2)")
Coupon findCustomerCoupon(int couponId, int customerId);
}
Но этот один запрос не работает, я получаю QuerySyntaxException: customer_coupons is not mapped
. Может кто-нибудь помочь мне создать правильный запрос?