안녕과 동일한 열 두 개의 필드,메핑는 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)를 다른 테이블/엔티티의 같은 열/필드로 매핑하기 때문에이 예외가 발생합니다.
이 매핑 문제를 해결하기 위해 내가 무엇을 할 수 있는지 알고 있습니까? 다른 전략을 제안 하시겠습니까? 테이블 구조를 변경할 수 없으며 매핑 중 하나를 "읽기 전용"으로 만들고 싶지 않지만 동적 매핑을 자유롭게 변경할 수 있습니다.
감사합니다.
Link 테이블의 외래 키 이름 대신 Node 테이블에서 사용 된 열 이름을 사용하려고 했으므로 세부 사항을 간과했습니다. 내 코드에서 그 오류를 잡아 주셔서 감사합니다! –