Как я могу получить объект из таблицы соединений с отношением ManyToMany? Весна + Спящий - PullRequest
0 голосов
/ 16 марта 2019

У меня есть две сущности:

@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. Может кто-нибудь помочь мне создать правильный запрос?

1 Ответ

0 голосов
/ 20 марта 2019

ВЫБРАТЬ купон ОТ КЛИЕНТА c ПРИСОЕДИНИТЬСЯ купон c.coupons ГДЕ c.id =: customerId И coupon.id =: couponId

Ответ от JB Nizet

...