请假设以下映射
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
's 的表。所以chart_fk
上面显示的映射中的列有时会指向 ,有时会PieChart
指向TimeseriesChart
。因此,共享连接表是在chart_fk
列上使用 2 个外键创建的,一次指向pie_charts
(即PieChart
当前类),一次指向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 的?