0

私はこのような結合テーブルを持っています。

EXCHANGE_RATE
------------------------------
ID                  BIGINT  PK
SOURCE_CURRENCY_ID  BIGINT  FK
TARGET_CURRENCY_ID  BIGINT  FK

マップされた ExchangeRate.java

public class ExchangeRate {

    protected ExchangeRage() {
        this(null, null);
    }

    // for SELECT NEW
    public ExchangeRate(Currency sourceCurrency, Currency targetCurrency) {
        this.sourceCurrency = sourceCurrency;
        this.targetCurrency = targetCurrency;
    }

    @Id private Long id;
    @ManyToOne private Currency sourceCurrency;
    @ManyToOne private Currency targetCurrency;
}

指定された の既存および非存在ExchangeRateのすべてを一覧表示するにはどうすればよいsourceCurrencyですか?

例えば、

  1. 3つの通貨があります。A、B、および C。
  2. A から B への ExhangeRate は既に存在します

以下の方法sourceCurrencyA

public List<ExchangeRate> listExchangeable(Currency sourceCurrency) {
    //
}

次のリストを取得するにはどうすればよいですか?

ExchangeRate {
    id:             0
    sourceCurrency: A
    targetCurrency: B
},
ExchangeRate {
    id:             NULL
    sourceCurrency: A
    targetCurrency: C
}
4

1 に答える 1

0

必須クエリ

// get all exchange rates for a source currency
public List<ExchangeRate> listExchangeable(Currency sourceCurrency) {
  Query qry = em.createQuery("select r from ExchangeRate r where 
                                 r.sourceCurrency = :sourceCurrency");
  qry.setParameter("sourceCurrency", sourceCurrency);
  return qry.getResultList();
}

指定された sourceCurrency の存在しない ExchangeRates の場合

Query qry = em.createQuery("select r from ExchangeRate r where 
                                 r.sourceCurrency != :sourceCurrency");
于 2013-01-17T12:16:58.310 に答える