次のマッピングを想定してください
Class PieChart{
@Persistent(defaultFetchGroup = "true", table = "chart_metrics_rel")
@Join(column = "chart_fk")
@Order(column = "order")
@Element(dependent = "true", column = "chart_metric_fk")
@Extensions({ @Extension(vendorName = "datanucleus", key = "relation-discriminator-column", value = "chart_type"),
@Extension(vendorName = "datanucleus", key = "relation-discriminator-pk", value = "true"),
@Extension(vendorName = "datanucleus", key = "relation-discriminator-value", value = "pie") })
private List<ChartMetric> metrics;
}
TimeseriesChart
これは期待どおりに機能しますが、問題は、別のテーブル全体が異なると呼ばれる別のクラスとまったく同じマッピングを持っていることid
です。したがって、chart_fk
上記のマッピングの列は、 を指す場合もあれば、 を指す場合もありPieChart
ますTimeseriesChart
。したがって、共有結合テーブルは、chart_fk
列に2 つの外部キーを使用して作成されます。1 つはpie_charts
(PieChart
現在のクラス) を指し、もう 1 つはtimeseries_chart
(つまりTimeseriesChart
) を指します。
値が円グラフと時系列テーブルの両方chart_fk
に存在しない限り、結合テーブルに要素を追加することはできません!
ドキュメントを確認し、generateForeignKey
注釈属性を使用しまし@Join
たが、機能していません。
それが属性の説明です:
generateForeignKey (String) ORM:Whether to generate a FK constraint on the join table (when not specifying the name)
では、外部キーがまだ生成されているため、属性が効果がないのはなぜですか?
そして、何の名前をwhen not specifying the name
指していますか?結合テーブルまたは FK の ?