는 다음 매핑 예상하지만 문제는 내가 가지고있는 TimeseriesChart
라는 다른 클래스와 같은 정확한 매핑을 가지고있다으로이 작동JDO 공유 조인 테이블 외국 키
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;
}
가정하십시오 유효하지 않습니다 다른 id
님의 전체 테이블. 따라서 위에 표시된 매핑의 chart_fk
열이 PieChart
을 가리킬 수도 있고 다른 시간이 TimeseriesChart
을 가리킬 수도 있습니다. 따라서 공유 결합 테이블은 pie_charts
(즉, 현재 클래스 인 PieChart
)을 가리키고 (예 : TimeseriesChart
)을 가리키면 chart_fk
열에 2 개의 외래 키로 생성됩니다.
chart_fk
값이 에있는 경우가 아니면 파이 테이블과 timeseries 테이블을 제외하고 조인 테이블에 요소를 추가 할 수 없습니다!
@Join
에 대한 문서를 확인하고 generateForeignKey
주석 특성을 사용했지만 작동하지 않습니다. 속성의 설명이다
generateForeignKey (String) ORM:Whether to generate a FK constraint on the join table (when not specifying the name)
왜 아직 생성 된 속성은 외국 키와 같은 효과가 없습니다합니까?
어떤 이름이 when not specifying the name
입니까? 조인 테이블이나 FK?
감사하지만 두 번째 단락을 이해하지 못해 죄송합니다. 내 컬렉션은 항상 한 가지 유형의'ChartMetric'입니다. 'PieChart'와'TimeseriesChart'는'ChartMetric' 객체의 컬렉션을 담고있는 클래스입니다. 필자는'relation-discriminator-value' 확장에 의해'Pie' 또는'Timeseries' 클래스에 대한 엔트리 (즉, 공유 된 조인 테이블)를 구별합니다. 그리고'generateForeignKey' 애트리뷰트가 예상대로 작동하지 않는 이유는 무엇입니까? –
이 확장은 동일한 요소 유형의 두 개의 콜렉션을 갖는 클래스 A에 대한 것입니다. DN docs에 따라 – DataNucleus
귀하의 회신에 감사드립니다. 이제 내가 잘못한 것을 이해합니다. 하지만'generateForeignKey' 속성이 예상대로 작동하지 않는 이유가 있습니까? –