CalculatedValue と Price の 2 つのクラスがあります。Price には CalculatedValue のマップがあります。各 CalculableValue インスタンスには、名前、値、およびいくつかの他のフィールドがあります。
Price と CV の間の依存関係を説明するために使用するマッピングを次に示します。
@OneToMany(
cascade = CascadeType.ALL,
fetch = FetchType.EAGER
)
@JoinColumn(name = "priceId")
private Map<String, CalculatedValue> calculatedValues =
new TreeMap<String, CalculatedValue>();
結合テーブルはなく、Price の一意の ID を参照する priceId 列によるマッピングのみです。
生成されたテーブルは次のようになります。
CREATE TABLE PUBLIC.CALCULATEDVALUE ( UNIQUEID BIGINT NOT NULL, KEY VARCHAR(2147483647) NOT NULL, PRICEID BIGINT, VALUE DOUBLE NOT NULL, CALCULATEDVALUES_KEY VARCHAR(2147483647), 主キー (UNIQUEID) );
ALTER TABLE PUBLIC.CALCULATEDVALUE ADD FOREIGN KEY (PRICEID) REFERENCES TEST.PUBLIC.PRICE (UNIQUEID);
すべてが機能していますが、これが可能かどうか知りたいです:
- 「CALCULATEDVALUES_KEY」列の自動作成は避けてください。この値はすでに KEY 列に格納されています。重複を避けて何らかの方法で JPA にヒントを与えるとよいでしょう。
- 削除された価格ごとに計算可能な値のカスケード削除をトリガーします (SQL 削除ステートメントを実行している場合)
- Date をキーとして使用する場合、そのようなマッピングは機能しますか? この特定の分野ではありませんが、他の多くの分野では役に立ちます。同じ OneToMany 関係を想定しています。
前もって感謝します!
PS。データベースとしてEclipseLinkとH2の最新バージョンを使用しています。PPS。Javaでキーを購入する必要があることが多いため、計算可能な値を配列に格納したくありませんでした。