java - JPA : Many to Many query help needed

标签 java hibernate jpa jpql

我有四个实体参与了一个查询,但我遇到了一些麻烦。关系如下:Exchange----*Contract*----*Combo----*Trade 和(简化)实体如下:

@Entity
public class Exchange implements Serializable {
    @Id(name="EXCHANGE_ID")
    private long exchangeId;

    @Column
    private String exchangeShortName;
}


@Entity
public class Contract implements Serializable { 
        @Id
        private long contractId;

        @Column
        private String contractName;

        @ManyToOne
        @JoinColumn(name="EXCHANGE_ID")
        private Exchange exchange;

        @ManyToMany
        @JoinTable(name="CONTRACT_COMBO",
                        joinColumns = { @JoinColumn(name="CONTRACT_ID") },
                        inverseJoinColumns = {@JoinColumn(name="COMBO_ID")})
        private Set<Combo> combos;

        @Column(name = "ACTIVE_FLAG")
        private String activeFlag;
}

@Entity
public class Combo implements Serializable {

        @Id
        @Column(name="COMBO_ID")
        private Integer id;

        @ManyToMany
        @JoinTable(name="CONTRACT_COMBO",
                        joinColumns = { @JoinColumn(name="COMBO_ID") },
                        inverseJoinColumns = {@JoinColumn(name="CONTRACT_ID")})
        private Set<Contract> legs;

        @OneToMany(mappedBy = "combo")
        private Set<Trade> trades;    
}

@Entity
public class Trade implements Serializable {
        @Id
        @Column(name="TRADE_ID")
        private long tradeId;

        @Column(name="REFERENCE")
        private String reference;

        @ManyToOne
        @JoinColumn(name="COMBO_ID")
        private Combo combo;
}

我想获得一个特定交易所的所有交易的列表,我不能完全使用 MEMBER OF。任何帮助将不胜感激。

最佳答案

试试这个

select distinct t 
  from Trade t
  join t.combo c
  join c.legs l
  join l.exchange e
 where e.exchangeShortName = 'whatever'

关于java - JPA : Many to Many query help needed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3124087/

相关文章:

java - HTTP Get 请求 - 不兼容的类型

java - spring-amqp 不会使用 AmqpTemplate.convertAndSend() 插入消息

java - 使用 FIND_IN_SET 的 Hibernate 标准

java - hibernate +Spring MVC : external objects library

google-app-engine - GAE 中是否不允许@ManyToMany 关系?

sql - 具有复合主键查询的 JPA COUNT 不起作用

internet-explorer - IE 浏览器上未检测到可用的 Java

java - Websphere Portal 8.5 上的 CXF 依赖性错误

java - 如何使用 hibernate 设置 UserTransaction

java - 如何在spring-jpa中保存基于实体的父表到子表的数据