diff --git a/foundation/org.eclipse.persistence.core/src/org/eclipse/persistence/tools/schemaframework/TableDefinition.java b/foundation/org.eclipse.persistence.core/src/org/eclipse/persistence/tools/schemaframework/TableDefinition.java
index 74221f6..af21597 100644
--- a/foundation/org.eclipse.persistence.core/src/org/eclipse/persistence/tools/schemaframework/TableDefinition.java
+++ b/foundation/org.eclipse.persistence.core/src/org/eclipse/persistence/tools/schemaframework/TableDefinition.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 1998, 2017 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2015 Oracle and/or its affiliates. All rights reserved.
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0
  * which accompanies this distribution.
@@ -19,8 +19,6 @@
  *       - 389090: JPA 2.1 DDL Generation Support (foreign key metadata support)
  *     02/04/2013-2.5 Guy Pelletier
  *       - 389090: JPA 2.1 DDL Generation Support
- *     10/07/2017-2.7 Vikram Bhatia
- *       - 441546: Foreign Key attribute when used in JoinColumn generates wrong DDL statement
  *******************************************************************************/
 package org.eclipse.persistence.tools.schemaframework;
 
@@ -1364,13 +1362,8 @@ public void setUniqueKeys(List<UniqueKeyConstraint> uniqueKeys) {
      * Set the foreign key constraints for this table.
      */
     public void setUserDefinedForeignKeyConstraints(Map<String, ForeignKeyConstraint> foreignKeyConstraints) {
-        for (ForeignKeyConstraint fkConstraint : foreignKeyConstraints.values()) {
-            if (!fkConstraint.getSourceFields().isEmpty() && !fkConstraint.getTargetFields().isEmpty()) {
-                hasUserDefinedForeignKeyConstraints = true;
-                foreignKeyMap = foreignKeyConstraints;
-                break;
-            }
-        }
+        foreignKeyMap = foreignKeyConstraints;
+        hasUserDefinedForeignKeyConstraints = true;
     }
 
     /**
diff --git a/jpa/eclipselink.jpa.test/resource/eclipselink-jpa21-model/persistence.xml b/jpa/eclipselink.jpa.test/resource/eclipselink-jpa21-model/persistence.xml
index ab9ccf2..7057013 100644
--- a/jpa/eclipselink.jpa.test/resource/eclipselink-jpa21-model/persistence.xml
+++ b/jpa/eclipselink.jpa.test/resource/eclipselink-jpa21-model/persistence.xml
@@ -73,8 +73,6 @@
         <class>org.eclipse.persistence.testing.models.jpa21.advanced.ddl.Athlete</class>
         <class>org.eclipse.persistence.testing.models.jpa21.advanced.ddl.Race</class>
         <class>org.eclipse.persistence.testing.models.jpa21.advanced.ddl.Coach</class>
-        <class>org.eclipse.persistence.testing.models.jpa21.advanced.ddl.Driver</class>
-        <class>org.eclipse.persistence.testing.models.jpa21.advanced.ddl.Vehicle</class>
         <class>org.eclipse.persistence.testing.models.jpa21.advanced.converters.AccomplishmentConverter</class>
         <class>org.eclipse.persistence.testing.models.jpa21.advanced.converters.AgeConverter</class>
         <class>org.eclipse.persistence.testing.models.jpa21.advanced.converters.DateConverter</class>
diff --git a/jpa/eclipselink.jpa.test/resource/eclipselink-jpa21-model/server/persistence.xml b/jpa/eclipselink.jpa.test/resource/eclipselink-jpa21-model/server/persistence.xml
index 3cda31c..190ad8e 100644
--- a/jpa/eclipselink.jpa.test/resource/eclipselink-jpa21-model/server/persistence.xml
+++ b/jpa/eclipselink.jpa.test/resource/eclipselink-jpa21-model/server/persistence.xml
@@ -80,8 +80,6 @@
         <class>org.eclipse.persistence.testing.models.jpa21.advanced.ddl.Athlete</class>
         <class>org.eclipse.persistence.testing.models.jpa21.advanced.ddl.Race</class>
         <class>org.eclipse.persistence.testing.models.jpa21.advanced.ddl.Coach</class>
-        <class>org.eclipse.persistence.testing.models.jpa21.advanced.ddl.Driver</class>
-        <class>org.eclipse.persistence.testing.models.jpa21.advanced.ddl.Vehicle</class>
         <class>org.eclipse.persistence.testing.models.jpa21.advanced.converters.AccomplishmentConverter</class>
         <class>org.eclipse.persistence.testing.models.jpa21.advanced.converters.AgeConverter</class>
         <class>org.eclipse.persistence.testing.models.jpa21.advanced.converters.DateConverter</class>
diff --git a/jpa/eclipselink.jpa.test/src/org/eclipse/persistence/testing/models/jpa21/advanced/ddl/Driver.java b/jpa/eclipselink.jpa.test/src/org/eclipse/persistence/testing/models/jpa21/advanced/ddl/Driver.java
deleted file mode 100644
index ae7cc0a..0000000
--- a/jpa/eclipselink.jpa.test/src/org/eclipse/persistence/testing/models/jpa21/advanced/ddl/Driver.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2017 Oracle and/or its affiliates. All rights reserved.
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0
- * which accompanies this distribution.
- * The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
- * and the Eclipse Distribution License is available at
- * http://www.eclipse.org/org/documents/edl-v10.php.
- *
- * Contributors:
- *     07/07/2017-2.7 Vikram Bhatia
- *       - 441546: Foreign Key attribute when used in JoinColumn generates wrong DDL statement
- ******************************************************************************/
-package org.eclipse.persistence.testing.models.jpa21.advanced.ddl;
-
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.Id;
-import javax.persistence.Table;
-
-@Entity
-@Table(name = "JPA21_DDL_DRIVER")
-public class Driver {
-    @Id
-    @Column(name = "NAME")
-    private String name;
-
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
-}
diff --git a/jpa/eclipselink.jpa.test/src/org/eclipse/persistence/testing/models/jpa21/advanced/ddl/Vehicle.java b/jpa/eclipselink.jpa.test/src/org/eclipse/persistence/testing/models/jpa21/advanced/ddl/Vehicle.java
deleted file mode 100644
index c5498ff..0000000
--- a/jpa/eclipselink.jpa.test/src/org/eclipse/persistence/testing/models/jpa21/advanced/ddl/Vehicle.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2017 Oracle and/or its affiliates. All rights reserved.
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0
- * which accompanies this distribution.
- * The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
- * and the Eclipse Distribution License is available at
- * http://www.eclipse.org/org/documents/edl-v10.php.
- *
- * Contributors:
- *     07/07/2017-2.7 Vikram Bhatia
- *       - 441546: Foreign Key attribute when used in JoinColumn generates wrong DDL statement
- ******************************************************************************/
-package org.eclipse.persistence.testing.models.jpa21.advanced.ddl;
-
-import javax.persistence.Entity;
-import javax.persistence.ForeignKey;
-import javax.persistence.Id;
-import javax.persistence.JoinColumn;
-import javax.persistence.ManyToOne;
-import javax.persistence.Table;
-
-@Entity
-@Table(name="JPA21_DDL_VEHICLE")
-public class Vehicle {
-  
-  @Id
-  private String vnum;
-  
-  @ManyToOne
-  @JoinColumn(name="LAST",foreignKey=@ForeignKey(name="FKv2d"))
-  private Driver driver;
-  
-  public String getVnum() {
-    return vnum;
-  }
-  public void setVnum(String vnum) {
-    this.vnum = vnum;
-  }
-  public Driver getDriver() {
-    return driver;
-  }
-  public void setDriver(Driver driver) {
-    this.driver = driver;
-  }
-}
diff --git a/jpa/eclipselink.jpa.test/src/org/eclipse/persistence/testing/tests/jpa21/advanced/ForeignKeyTestSuite.java b/jpa/eclipselink.jpa.test/src/org/eclipse/persistence/testing/tests/jpa21/advanced/ForeignKeyTestSuite.java
index 9e7697d..dcb2677 100644
--- a/jpa/eclipselink.jpa.test/src/org/eclipse/persistence/testing/tests/jpa21/advanced/ForeignKeyTestSuite.java
+++ b/jpa/eclipselink.jpa.test/src/org/eclipse/persistence/testing/tests/jpa21/advanced/ForeignKeyTestSuite.java
@@ -27,7 +27,6 @@
 import javax.persistence.EntityManager;
 
 import org.eclipse.persistence.descriptors.ClassDescriptor;
-import org.eclipse.persistence.exceptions.DatabaseException;
 import org.eclipse.persistence.internal.helper.DatabaseTable;
 import org.eclipse.persistence.internal.queries.MappedKeyMapContainerPolicy;
 import org.eclipse.persistence.mappings.DirectCollectionMapping;
@@ -42,7 +41,6 @@
 import org.eclipse.persistence.testing.framework.junit.JUnitTestCase;
 
 import org.eclipse.persistence.testing.models.jpa21.advanced.ddl.Coach;
-import org.eclipse.persistence.testing.models.jpa21.advanced.ddl.Driver;
 import org.eclipse.persistence.testing.models.jpa21.advanced.ddl.Organizer;
 import org.eclipse.persistence.testing.models.jpa21.advanced.ddl.Race;
 import org.eclipse.persistence.testing.models.jpa21.advanced.ddl.Responsibility;
@@ -51,7 +49,7 @@
 import org.eclipse.persistence.testing.models.jpa21.advanced.ddl.RunnerStatus;
 import org.eclipse.persistence.testing.models.jpa21.advanced.ddl.Shoe;
 import org.eclipse.persistence.testing.models.jpa21.advanced.ddl.Sprinter;
-import org.eclipse.persistence.testing.models.jpa21.advanced.ddl.Vehicle;
+
 import org.eclipse.persistence.testing.models.jpa21.advanced.enums.Health;
 import org.eclipse.persistence.testing.models.jpa21.advanced.enums.Level;
 import org.eclipse.persistence.testing.models.jpa21.advanced.enums.RunningStatus;
@@ -97,7 +95,6 @@ public static Test suite() {
         suite.addTest(new ForeignKeyTestSuite("testElementCollectionForeignKeys"));
 
         suite.addTest(new ForeignKeyTestSuite("testReadAndWriteDDLObjects"));
-        suite.addTest(new ForeignKeyTestSuite("testBug441546"));
 
 
         return suite;
@@ -271,63 +268,4 @@ public void testReadAndWriteDDLObjects() {
             closeEntityManager(em);
         }
     }
-    
-    /**
-     * Tests a many to one foreign key setting with null foreign key definition.
-     */
-    public void testBug441546() {
-        EntityManager em = createEntityManager();
-
-        try {
-            beginTransaction(em);
-            
-            Driver driver = new Driver();
-            driver.setName("Bob");
-            
-            Vehicle vehicle = new Vehicle();
-            vehicle.setVnum("1A467");
-            vehicle.setDriver(driver);
-
-            em.persist(driver);
-            em.persist(vehicle);
-            commitTransaction(em);
- 
-        } catch (RuntimeException e) {
-            if (isTransactionActive(em)){
-                rollbackTransaction(em);
-            }
-
-            throw e;
-        } finally {
-            closeEntityManager(em);
-        }
-        
-        em = createEntityManager();
-        try {
-            // Try Deleting Driver with constraint
-            beginTransaction(em);
-            
-            Driver d2 = em.find(Driver.class, "Bob");
-            em.remove(d2);
-            
-            commitTransaction(em);         
-            fail("Foreign Key constraint is not defined in database on table.");
-   
-        } catch (RuntimeException e) {
-            if (isTransactionActive(em)){
-                rollbackTransaction(em);
-            }
-            
-            Throwable cause = e.getCause();
-
-            if (cause instanceof DatabaseException) {
-                assertTrue("Error Deleting row with constraint with different error.", cause.getCause() instanceof java.sql.SQLIntegrityConstraintViolationException);
-            } else { 
-                throw e;
-            }
-
-        } finally {
-            closeEntityManager(em);
-        }
-    }
 }
