您好同一列,映射兩個字段與的EclipseLink API
我使用的EclipseLink API創建動態實體來表示存儲在數據庫表的曲線圖。這些鏈接存儲在它們自己的表格中,其中包含鏈接ID列,開始節點ID和結束節點ID列以及其他用戶定義的列。節點具有自己的表格,其中存儲了節點ID以及其他用戶定義的列。
當從鏈接表做映射到節點表,我與API這樣做:
OneToOneMapping startNodeMapping = dynamicLinkTypeBuilder.addOneToOneMapping("startNode", dynamicNodeTypeBuilder.getType(), "NODE_ID");
OneToOneMapping endNodeMapping = dynamicLinkTypeBuilder.addOneToOneMapping("endNode", dynamicNodeTypeBuilder.getType(), "NODE_ID");
當運行前面的代碼,我收到堆棧跟蹤以下消息:
Local Exception Stack: Exception [EclipseLink-48] (Eclipse Persistence Services - 2.3.0.v20110604-r9504): org.eclipse.persistence.exceptions.DescriptorException
Exception Description: Multiple writable mappings exist for the field [TEST_NETWORK_LINK.NODE_ID]. Only one may be defined as writable, all others must be specified read-only.
Mapping: org.eclipse.persistence.mappings.OneToOneMapping[startNodeId]
引發此異常是因爲我將兩個字段(startNode和endNode)從同一實體映射到不同表/實體中的同一列/字段。
你知道我能做些什麼來解決這個映射問題嗎?你會建議一個不同的策略?我無法更改表格結構,也不想讓其中一個映射爲「只讀」,但我可以自由更改動態映射。
謝謝!
我明白了,我忽略了那個細節,我試圖使用Node表中使用的列名而不是Link表中的外鍵名。感謝您在我的代碼中捕獲錯誤! –