You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by da...@apache.org on 2007/01/25 21:34:53 UTC
svn commit: r499954 -
/incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/java/org/apache/openejb/jee/jpa/OpenEjb2CmpConversion.java
Author: dain
Date: Thu Jan 25 12:34:52 2007
New Revision: 499954
URL: http://svn.apache.org/viewvc?view=rev&rev=499954
Log:
Add converter for relationships using a join table
Modified:
incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/java/org/apache/openejb/jee/jpa/OpenEjb2CmpConversion.java
Modified: incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/java/org/apache/openejb/jee/jpa/OpenEjb2CmpConversion.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/java/org/apache/openejb/jee/jpa/OpenEjb2CmpConversion.java?view=diff&rev=499954&r1=499953&r2=499954
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/java/org/apache/openejb/jee/jpa/OpenEjb2CmpConversion.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/java/org/apache/openejb/jee/jpa/OpenEjb2CmpConversion.java Thu Jan 25 12:34:52 2007
@@ -129,7 +129,65 @@
field.getJoinColumn().add(joinColumn);
}
} else {
- // todo support many-to-many
+ JoinTable joinTable = new JoinTable();
+ joinTable.setName(relation.getManyToManyTableName());
+
+ //
+ // left
+ EjbRelationshipRoleType leftRole = roles.get(0);
+ RelationField left = null;
+ if (leftRole.getRelationshipRoleSource() != null) {
+ String leftEjbName = leftRole.getRelationshipRoleSource().getEjbName();
+ EntityData leftEntityData = entities.get(leftEjbName);
+ if (leftEntityData == null) {
+ // todo warn no such entity in ejb-jar.xml
+ continue;
+ }
+ left = leftEntityData.relations.get(leftRole.getCmrField().getCmrFieldName());
+ }
+
+ if (left != null) {
+ left.setJoinTable(joinTable);
+
+ EjbRelationshipRoleType.RoleMapping roleMapping = leftRole.getRoleMapping();
+ for (EjbRelationshipRoleType.RoleMapping.CmrFieldMapping cmrFieldMapping : roleMapping.getCmrFieldMapping()) {
+ JoinColumn joinColumn = new JoinColumn();
+ joinColumn.setName(cmrFieldMapping.getForeignKeyColumn());
+ joinColumn.setReferencedColumnName(cmrFieldMapping.getKeyColumn());
+ joinTable.getJoinColumn().add(joinColumn);
+ }
+ }
+
+ //
+ // right
+ if (roles.size() > 1) {
+ EjbRelationshipRoleType rightRole = roles.get(1);
+
+ RelationField right = left.getRelatedField();
+ if (right == null) {
+ if (rightRole.getRelationshipRoleSource() != null) {
+ String rightEjbName = rightRole.getRelationshipRoleSource().getEjbName();
+ EntityData rightEntityData = entities.get(rightEjbName);
+ if (rightEntityData == null) {
+ // todo warn no such entity in ejb-jar.xml
+ continue;
+ }
+ right = rightEntityData.relations.get(rightRole.getCmrField().getCmrFieldName());
+ }
+ }
+ if (right != null) {
+ if (left == null) {
+ right.setJoinTable(joinTable);
+ }
+ EjbRelationshipRoleType.RoleMapping roleMapping = rightRole.getRoleMapping();
+ for (EjbRelationshipRoleType.RoleMapping.CmrFieldMapping cmrFieldMapping : roleMapping.getCmrFieldMapping()) {
+ JoinColumn joinColumn = new JoinColumn();
+ joinColumn.setName(cmrFieldMapping.getForeignKeyColumn());
+ joinColumn.setReferencedColumnName(cmrFieldMapping.getKeyColumn());
+ joinTable.getInverseJoinColumn().add(joinColumn);
+ }
+ }
+ }
}
}
}