首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从具有ManyToMany关系的join表中获取对象?Spring + Hibernate

问如何从具有ManyToMany关系的join表中获取对象?Spring + Hibernate
EN

Stack Overflow用户
提问于 2019-03-16 06:10:47
回答 1查看 55关注 0票数 0

我有两个实体:

代码语言:javascript
复制
@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 (客户可以有多个优惠券,优惠券可以有多个客户)。

我需要以某种方式从customer_coupons表中获得customerId和couponId客户的优惠券。我有CouponRepository接口:

代码语言:javascript
复制
@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。有人能帮我创建正确的查询吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-21 04:20:06

从Customer c加入c.coupons优惠券中选择优惠券,其中c.id = :customerId和coupon.id =:优惠券AND

JB Nizet的回答

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55191275

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档