diff --git a/sdo/org.eclipse.persistence.sdo/src/test/java/org/eclipse/persistence/testing/sdo/helper/jaxbhelper/containment/ContainmentProject.java b/sdo/org.eclipse.persistence.sdo/src/test/java/org/eclipse/persistence/testing/sdo/helper/jaxbhelper/containment/ContainmentProject.java
index 8113c85..0adaef2 100644
--- a/sdo/org.eclipse.persistence.sdo/src/test/java/org/eclipse/persistence/testing/sdo/helper/jaxbhelper/containment/ContainmentProject.java
+++ b/sdo/org.eclipse.persistence.sdo/src/test/java/org/eclipse/persistence/testing/sdo/helper/jaxbhelper/containment/ContainmentProject.java
@@ -71,14 +71,18 @@
 
         XMLCompositeObjectMapping mapping = new XMLCompositeObjectMapping();
         mapping.setReferenceClass(Child.class);
-        mapping.getInverseReferenceMapping().setAttributeName("container");
+        if (mapping.getInverseReferenceMapping() != null) {
+            mapping.getInverseReferenceMapping().setAttributeName("container");
+        }
         mapping.setAttributeName("childProperty");
         mapping.setXPath("tns:child");
         xmlDescriptor.addMapping(mapping);
 
         XMLCompositeCollectionMapping mapping2 = new XMLCompositeCollectionMapping();
         mapping2.setReferenceClass(Child.class);
-        mapping2.getInverseReferenceMapping().setAttributeName("container");
+        if (mapping.getInverseReferenceMapping() != null) {
+            mapping2.getInverseReferenceMapping().setAttributeName("container");
+        }
         mapping2.setAttributeName("childCollectionProperty");
         mapping2.setXPath("tns:child-many");
         mapping2.getContainerPolicy().setContainerClass(ArrayList.class);
diff --git a/sdo/org.eclipse.persistence.sdo/src/test/java/org/eclipse/persistence/testing/sdo/helper/jaxbhelper/isset/IsSetProject.java b/sdo/org.eclipse.persistence.sdo/src/test/java/org/eclipse/persistence/testing/sdo/helper/jaxbhelper/isset/IsSetProject.java
index d8f6b51..6622556 100644
--- a/sdo/org.eclipse.persistence.sdo/src/test/java/org/eclipse/persistence/testing/sdo/helper/jaxbhelper/isset/IsSetProject.java
+++ b/sdo/org.eclipse.persistence.sdo/src/test/java/org/eclipse/persistence/testing/sdo/helper/jaxbhelper/isset/IsSetProject.java
@@ -71,14 +71,18 @@
 
         XMLCompositeObjectMapping mapping = new XMLCompositeObjectMapping();
         mapping.setReferenceClass(Child.class);
-        mapping.getInverseReferenceMapping().setAttributeName("container");
+        if (mapping.getInverseReferenceMapping() != null) {
+            mapping.getInverseReferenceMapping().setAttributeName("container");
+        }
         mapping.setAttributeName("childProperty");
         mapping.setXPath("tns:child");
         xmlDescriptor.addMapping(mapping);
 
         XMLCompositeCollectionMapping mapping2 = new XMLCompositeCollectionMapping();
         mapping2.setReferenceClass(Child.class);
-        mapping2.getInverseReferenceMapping().setAttributeName("container");
+        if (mapping.getInverseReferenceMapping() != null) {
+            mapping2.getInverseReferenceMapping().setAttributeName("container");
+        }
         mapping2.setAttributeName("childCollectionProperty");
         mapping2.setXPath("tns:child-many");
         mapping2.getContainerPolicy().setContainerClass(ArrayList.class);
