diff --git a/foundation/eclipselink.core.test/src/org/eclipse/persistence/testing/tests/expressions/ExpressionBuilderTestSuite.java b/foundation/eclipselink.core.test/src/org/eclipse/persistence/testing/tests/expressions/ExpressionBuilderTestSuite.java
new file mode 100644
index 0000000..e23f50b
--- /dev/null
+++ b/foundation/eclipselink.core.test/src/org/eclipse/persistence/testing/tests/expressions/ExpressionBuilderTestSuite.java
@@ -0,0 +1,54 @@
+/*******************************************************************************
+ * Copyright (c) 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.
+ * 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:
+ *     Tomas Kraus - Initial API and implementation.
+ ******************************************************************************/
+package org.eclipse.persistence.testing.tests.expressions;
+
+import org.eclipse.persistence.expressions.ExpressionBuilder;
+import org.eclipse.persistence.internal.sessions.AbstractSession;
+import org.eclipse.persistence.internal.sessions.UnitOfWorkImpl;
+import org.eclipse.persistence.sessions.UnitOfWork;
+import org.eclipse.persistence.testing.framework.TestCase;
+import org.eclipse.persistence.testing.framework.TestErrorException;
+
+/**
+ * Test ExpressionBuilder class and instance methods.
+ */
+public class ExpressionBuilderTestSuite extends TestCase {
+
+    public ExpressionBuilderTestSuite() {
+        super();
+        setName(getName());
+        setDescription("Test ExpressionBuilder class and instance methods");
+    }
+
+    public void setup() {
+    }
+
+    // Execute all tests in suite.
+    public void test() {
+        testUnitOfWorkInExpressionBuilder();
+    }
+
+	// Bug# 429232 - Instance of UnitOfWork is stored in ExpressionBuilder inside ConcurrentFixedCache
+    // Make sure that [ExpressionBuilder].setSession() will not store UnitOfWork inside builder even
+    // when UnitOfWork is passed as an argument.
+    public void testUnitOfWorkInExpressionBuilder() {
+        ExpressionBuilder builder = new ExpressionBuilder();
+        UnitOfWorkImpl uow = (UnitOfWorkImpl)getSession().acquireUnitOfWork();
+        builder.setSession(uow);
+        AbstractSession session = builder.getSession();
+        if (session instanceof UnitOfWork) {
+            throw new TestErrorException("Session stored in ExpressionBuilder shall not be UnitOfWork.");
+        }
+    }
+
+}
diff --git a/foundation/eclipselink.core.test/src/org/eclipse/persistence/testing/tests/expressions/ExpressionTestSuite.java b/foundation/eclipselink.core.test/src/org/eclipse/persistence/testing/tests/expressions/ExpressionTestSuite.java
index 1d4fe11..fce7895 100644
--- a/foundation/eclipselink.core.test/src/org/eclipse/persistence/testing/tests/expressions/ExpressionTestSuite.java
+++ b/foundation/eclipselink.core.test/src/org/eclipse/persistence/testing/tests/expressions/ExpressionTestSuite.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 1998, 2013 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.
@@ -1708,6 +1708,8 @@
         addTest(new LowerCaseForCaseInsensitiveTest(LowerCaseForCaseInsensitiveTest.EqualsIgnoreCase));
         addTest(new LowerCaseForCaseInsensitiveTest(LowerCaseForCaseInsensitiveTest.LikeIgnoreCase));
         addTest(new LowerCaseForCaseInsensitiveTest(LowerCaseForCaseInsensitiveTest.ContainsSubstringIgnoringCase));
+        // ExpressionBuilder test suite
+        addTest(new ExpressionBuilderTestSuite());
     }
 
     //SRG test set is maintained by QA only, do NOT add any new tests into it.
diff --git a/foundation/org.eclipse.persistence.core/src/org/eclipse/persistence/expressions/ExpressionBuilder.java b/foundation/org.eclipse.persistence.core/src/org/eclipse/persistence/expressions/ExpressionBuilder.java
index bd3aa14..f9c8875 100644
--- a/foundation/org.eclipse.persistence.core/src/org/eclipse/persistence/expressions/ExpressionBuilder.java
+++ b/foundation/org.eclipse.persistence.core/src/org/eclipse/persistence/expressions/ExpressionBuilder.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 1998, 2013 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. 
@@ -23,6 +23,7 @@
 import org.eclipse.persistence.internal.sessions.AbstractSession;
 import org.eclipse.persistence.internal.expressions.*;
 import org.eclipse.persistence.queries.DatabaseQuery;
+import org.eclipse.persistence.sessions.UnitOfWork;
 
 /**
  * <P>
@@ -410,9 +411,10 @@
     /**
      * INTERNAL:
      * Set the session in which we expect this expression to be translated.
+     * Stored session shall always be root session.
      */
     public void setSession(AbstractSession session) {
-        this.session = session;
+        this.session = session.getRootSession(null);
     }
 
     /**
