次のマッピングを想定してください
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 の ?