diff --git a/tests/Query/MultiJoin2TestCase.php b/tests/Query/MultiJoin2TestCase.php
new file mode 100644
index 000000000..7df2e8f17
--- /dev/null
+++ b/tests/Query/MultiJoin2TestCase.php
@@ -0,0 +1,72 @@
+<?php
+/*
+ *  $Id$
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * This software consists of voluntary contributions made by many individuals
+ * and is licensed under the LGPL. For more information, see
+ * <http://www.phpdoctrine.com>.
+ */
+
+/**
+ * Doctrine_Query_MultiJoin2_TestCase
+ *
+ * @package     Doctrine
+ * @author      Konsta Vesterinen <kvesteri@cc.hut.fi>
+ * @license     http://www.opensource.org/licenses/lgpl-license.php LGPL
+ * @category    Object Relational Mapping
+ * @link        www.phpdoctrine.com
+ * @since       1.0
+ * @version     $Revision$
+ */
+class Doctrine_Query_MultiJoin2_TestCase extends Doctrine_UnitTestCase {
+    public function testInitializeData() {
+        $query = new Doctrine_Query($this->connection);
+        
+        $cat = new QueryTest_Category();
+        $cat->rootCategoryId = 0;
+        $cat->parentCategoryId = 0;
+        $cat->name = "Cat1";
+        $cat->position = 0;
+        $cat->save();
+        
+        $board = new QueryTest_Board();
+        $board->name = "B1";
+        $board->categoryId = $cat->id;
+        $board->position = 0;
+        $board->save();
+        
+        $author = new QueryTest_User();
+        $author->username = "romanb";
+        $author->save();
+        
+        $lastEntry = new QueryTest_Entry();
+        $lastEntry->authorId = $author->id;
+        $lastEntry->date = 1234;
+        $lastEntry->save();
+        
+    }
+    public function testMultipleJoinFetchingWithDeepJoins() {
+        $query = new Doctrine_Query($this->connection);
+        $categories = $query->select("c.*, subCats.*, b.*, le.*, a.*")
+                    ->from("QueryTest_Category c")
+                    ->leftJoin("c.subCategories subCats")
+                    ->leftJoin("c.boards b")
+                    ->leftJoin("b.lastEntry le")
+                    ->leftJoin("le.author a")
+                    ->where("c.parentCategoryId = 0")
+                    ->orderBy("c.position ASC, subCats.position ASC, b.position ASC")
+                    ->execute();
+    }
+}
diff --git a/tests/Query/MultiJoinTestCase.php b/tests/Query/MultiJoinTestCase.php
index 19065479c..16b0985f9 100644
--- a/tests/Query/MultiJoinTestCase.php
+++ b/tests/Query/MultiJoinTestCase.php
@@ -1,180 +1,180 @@
-<?php
-/*
- *  $Id$
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information, see
- * <http://www.phpdoctrine.com>.
- */
-
-/**
- * Doctrine_Query_MultiJoin_TestCase
- *
- * @package     Doctrine
- * @author      Konsta Vesterinen <kvesteri@cc.hut.fi>
- * @license     http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @category    Object Relational Mapping
- * @link        www.phpdoctrine.com
- * @since       1.0
- * @version     $Revision$
- */
-class Doctrine_Query_MultiJoin_TestCase extends Doctrine_UnitTestCase {
-    public function testInitializeData() {
-
-        $query = new Doctrine_Query($this->connection);
-
-        $user = $this->connection->getTable('User')->find(4);
-
-
-        $album = $this->connection->create('Album');
-        $album->Song[0];
-
-        $user->Album[0]->name = 'Damage Done';
-        $user->Album[1]->name = 'Haven';
-
-        $user->Album[0]->Song[0]->title = 'Damage Done';
-        $user->Album[0]->Song[1]->title = 'The Treason Wall';
-        $user->Album[0]->Song[2]->title = 'Monochromatic Stains';
-
-        $this->assertEqual(count($user->Album[0]->Song), 3);
-
-
-        $user->Album[1]->Song[0]->title = 'Not Built To Last';
-        $user->Album[1]->Song[1]->title = 'The Wonders At Your Feet';
-        $user->Album[1]->Song[2]->title = 'Feast Of Burden';
-        $user->Album[1]->Song[3]->title = 'Fabric';
-        $this->assertEqual(count($user->Album[1]->Song), 4);
-
-        $user->save();
-
-        $user = $this->objTable->find(4);
-
-        $this->assertEqual(count($user->Album[0]->Song), 3);
-        $this->assertEqual(count($user->Album[1]->Song), 4);
-        
-        
-        $user = $this->connection->getTable('User')->find(5);
-        
-        $user->Album[0]->name = 'Clayman';
-        $user->Album[1]->name = 'Colony';
-        $user->Album[1]->Song[0]->title = 'Colony';
-        $user->Album[1]->Song[1]->title = 'Ordinary Story';
-        
-        $user->save();
-        
-        $this->assertEqual(count($user->Album[0]->Song), 0);
-        $this->assertEqual(count($user->Album[1]->Song), 2);
-    }
-    public function testMultipleOneToManyFetching() {
-        $this->connection->clear();
-
-        $query = new Doctrine_Query();
-
-        $users = $query->query('FROM User.Album.Song, User.Phonenumber WHERE User.id IN (4,5)');
-
-        $this->assertEqual($users->count(), 2);
-
-        $this->assertEqual($users[0]->id, 4);
-
-        $this->assertEqual($users[0]->Album[0]->name, 'Damage Done');
-        $this->assertEqual($users[0]->Album[0]->Song[0]->title, 'Damage Done');
-        $this->assertEqual($users[0]->Album[0]->Song[1]->title, 'The Treason Wall');
-        $this->assertEqual($users[0]->Album[0]->Song[2]->title, 'Monochromatic Stains');
-        $this->assertEqual($users[0]->Album[1]->name, 'Haven');
-        $this->assertEqual($users[0]->Album[1]->Song[0]->title, 'Not Built To Last');
-        $this->assertEqual($users[0]->Album[1]->Song[1]->title, 'The Wonders At Your Feet');
-        $this->assertEqual($users[0]->Album[1]->Song[2]->title, 'Feast Of Burden');
-        $this->assertEqual($users[0]->Album[1]->Song[3]->title, 'Fabric');
-
-        $this->assertEqual($users[1]->id, 5);
-        $this->assertEqual($users[1]->Album[0]->name, 'Clayman');
-        $this->assertEqual($users[1]->Album[1]->name, 'Colony');
-        $this->assertEqual($users[1]->Album[1]->Song[0]->title, 'Colony');
-        $this->assertEqual($users[1]->Album[1]->Song[1]->title, 'Ordinary Story');
-        
-        $this->assertEqual($users[0]->Phonenumber[0]->phonenumber, '123 123');
-        
-        $this->assertEqual($users[1]->Phonenumber[0]->phonenumber, '123 123');
-        $this->assertEqual($users[1]->Phonenumber[1]->phonenumber, '456 456');
-        $this->assertEqual($users[1]->Phonenumber[2]->phonenumber, '789 789');
-    }
-
-    public function testInitializeMoreData() {
-        $user = $this->connection->getTable('User')->find(4);
-        $user->Book[0]->name = 'The Prince';
-        $user->Book[0]->Author[0]->name = 'Niccolo Machiavelli';
-        $user->Book[0]->Author[1]->name = 'Someone';
-        $user->Book[1]->name = 'The Art of War';
-        $user->Book[1]->Author[0]->name = 'Someone';
-        $user->Book[1]->Author[1]->name = 'Niccolo Machiavelli';
-
-
-        $user->save();
-
-        $user = $this->connection->getTable('User')->find(5);
-        $user->Book[0]->name = 'Zadig';
-        $user->Book[0]->Author[0]->name = 'Voltaire';
-        $user->Book[0]->Author[1]->name = 'Someone';
-        $user->Book[1]->name = 'Candide';
-        $user->Book[1]->Author[0]->name = 'Someone';
-        $user->Book[1]->Author[1]->name = 'Voltaire';
-        $user->save();
-
-        $this->connection->clear();
-    }
-    public function testMultipleOneToManyFetching2() {
-        $query = new Doctrine_Query();
-
-        $users = $query->query("FROM User.Album.Song, User.Book.Author WHERE User.id IN (4,5)");
-        
-        $this->assertEqual($users->count(), 2);
-
-        $this->assertEqual($users[0]->id, 4);
-        $this->assertEqual($users[0]->Album[0]->name, 'Damage Done');
-        $this->assertEqual($users[0]->Album[0]->Song[0]->title, 'Damage Done');
-        $this->assertEqual($users[0]->Album[0]->Song[1]->title, 'The Treason Wall');
-        $this->assertEqual($users[0]->Album[0]->Song[2]->title, 'Monochromatic Stains');
-        $this->assertEqual($users[0]->Album[1]->name, 'Haven');
-        $this->assertEqual($users[0]->Album[1]->Song[0]->title, 'Not Built To Last');
-        $this->assertEqual($users[0]->Album[1]->Song[1]->title, 'The Wonders At Your Feet');
-        $this->assertEqual($users[0]->Album[1]->Song[2]->title, 'Feast Of Burden');
-        $this->assertEqual($users[0]->Album[1]->Song[3]->title, 'Fabric');
-        
-        $this->assertEqual($users[0]->Book[0]->Author[0]->name, 'Niccolo Machiavelli');
-        $this->assertEqual($users[0]->Book[0]->Author[1]->name, 'Someone');
-        $this->assertEqual($users[0]->Book[1]->name, 'The Art of War');
-        $this->assertEqual($users[0]->Book[1]->Author[0]->name, 'Someone');
-        $this->assertEqual($users[0]->Book[1]->Author[1]->name, 'Niccolo Machiavelli');
-
-        $this->assertEqual($users[1]->id, 5);
-        $this->assertEqual($users[1]->Album[0]->name, 'Clayman');
-        $this->assertEqual($users[1]->Album[1]->name, 'Colony');
-        $this->assertEqual($users[1]->Album[1]->Song[0]->title, 'Colony');
-        $this->assertEqual($users[1]->Album[1]->Song[1]->title, 'Ordinary Story');
-
-        $this->assertEqual($users[1]->Book[0]->name, 'Zadig');
-        $this->assertEqual($users[1]->Book[0]->Author[0]->name, 'Voltaire');
-        $this->assertEqual($users[1]->Book[0]->Author[1]->name, 'Someone');
-        $this->assertEqual($users[1]->Book[1]->name, 'Candide');
-        $this->assertEqual($users[1]->Book[1]->Author[0]->name, 'Someone');
-        $this->assertEqual($users[1]->Book[1]->Author[1]->name, 'Voltaire');
-    }
-
-    public function testMultipleOneToManyFetchingWithOrderBy() {
-        $query = new Doctrine_Query();
-
-        $users = $query->query("FROM User.Album.Song WHERE User.id IN (4,5) ORDER BY User.Album.Song.title DESC");
-    }
-}
+<?php
+/*
+ *  $Id$
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * This software consists of voluntary contributions made by many individuals
+ * and is licensed under the LGPL. For more information, see
+ * <http://www.phpdoctrine.com>.
+ */
+
+/**
+ * Doctrine_Query_MultiJoin_TestCase
+ *
+ * @package     Doctrine
+ * @author      Konsta Vesterinen <kvesteri@cc.hut.fi>
+ * @license     http://www.opensource.org/licenses/lgpl-license.php LGPL
+ * @category    Object Relational Mapping
+ * @link        www.phpdoctrine.com
+ * @since       1.0
+ * @version     $Revision$
+ */
+class Doctrine_Query_MultiJoin_TestCase extends Doctrine_UnitTestCase {
+    public function testInitializeData() {
+
+        $query = new Doctrine_Query($this->connection);
+
+        $user = $this->connection->getTable('User')->find(4);
+
+
+        $album = $this->connection->create('Album');
+        $album->Song[0];
+
+        $user->Album[0]->name = 'Damage Done';
+        $user->Album[1]->name = 'Haven';
+
+        $user->Album[0]->Song[0]->title = 'Damage Done';
+        $user->Album[0]->Song[1]->title = 'The Treason Wall';
+        $user->Album[0]->Song[2]->title = 'Monochromatic Stains';
+
+        $this->assertEqual(count($user->Album[0]->Song), 3);
+
+
+        $user->Album[1]->Song[0]->title = 'Not Built To Last';
+        $user->Album[1]->Song[1]->title = 'The Wonders At Your Feet';
+        $user->Album[1]->Song[2]->title = 'Feast Of Burden';
+        $user->Album[1]->Song[3]->title = 'Fabric';
+        $this->assertEqual(count($user->Album[1]->Song), 4);
+
+        $user->save();
+
+        $user = $this->objTable->find(4);
+
+        $this->assertEqual(count($user->Album[0]->Song), 3);
+        $this->assertEqual(count($user->Album[1]->Song), 4);
+        
+        
+        $user = $this->connection->getTable('User')->find(5);
+        
+        $user->Album[0]->name = 'Clayman';
+        $user->Album[1]->name = 'Colony';
+        $user->Album[1]->Song[0]->title = 'Colony';
+        $user->Album[1]->Song[1]->title = 'Ordinary Story';
+        
+        $user->save();
+        
+        $this->assertEqual(count($user->Album[0]->Song), 0);
+        $this->assertEqual(count($user->Album[1]->Song), 2);
+    }
+    public function testMultipleOneToManyFetching() {
+        $this->connection->clear();
+
+        $query = new Doctrine_Query();
+
+        $users = $query->query('FROM User.Album.Song, User.Phonenumber WHERE User.id IN (4,5)');
+
+        $this->assertEqual($users->count(), 2);
+
+        $this->assertEqual($users[0]->id, 4);
+
+        $this->assertEqual($users[0]->Album[0]->name, 'Damage Done');
+        $this->assertEqual($users[0]->Album[0]->Song[0]->title, 'Damage Done');
+        $this->assertEqual($users[0]->Album[0]->Song[1]->title, 'The Treason Wall');
+        $this->assertEqual($users[0]->Album[0]->Song[2]->title, 'Monochromatic Stains');
+        $this->assertEqual($users[0]->Album[1]->name, 'Haven');
+        $this->assertEqual($users[0]->Album[1]->Song[0]->title, 'Not Built To Last');
+        $this->assertEqual($users[0]->Album[1]->Song[1]->title, 'The Wonders At Your Feet');
+        $this->assertEqual($users[0]->Album[1]->Song[2]->title, 'Feast Of Burden');
+        $this->assertEqual($users[0]->Album[1]->Song[3]->title, 'Fabric');
+
+        $this->assertEqual($users[1]->id, 5);
+        $this->assertEqual($users[1]->Album[0]->name, 'Clayman');
+        $this->assertEqual($users[1]->Album[1]->name, 'Colony');
+        $this->assertEqual($users[1]->Album[1]->Song[0]->title, 'Colony');
+        $this->assertEqual($users[1]->Album[1]->Song[1]->title, 'Ordinary Story');
+        
+        $this->assertEqual($users[0]->Phonenumber[0]->phonenumber, '123 123');
+        
+        $this->assertEqual($users[1]->Phonenumber[0]->phonenumber, '123 123');
+        $this->assertEqual($users[1]->Phonenumber[1]->phonenumber, '456 456');
+        $this->assertEqual($users[1]->Phonenumber[2]->phonenumber, '789 789');
+    }
+
+    public function testInitializeMoreData() {
+        $user = $this->connection->getTable('User')->find(4);
+        $user->Book[0]->name = 'The Prince';
+        $user->Book[0]->Author[0]->name = 'Niccolo Machiavelli';
+        $user->Book[0]->Author[1]->name = 'Someone';
+        $user->Book[1]->name = 'The Art of War';
+        $user->Book[1]->Author[0]->name = 'Someone';
+        $user->Book[1]->Author[1]->name = 'Niccolo Machiavelli';
+
+
+        $user->save();
+
+        $user = $this->connection->getTable('User')->find(5);
+        $user->Book[0]->name = 'Zadig';
+        $user->Book[0]->Author[0]->name = 'Voltaire';
+        $user->Book[0]->Author[1]->name = 'Someone';
+        $user->Book[1]->name = 'Candide';
+        $user->Book[1]->Author[0]->name = 'Someone';
+        $user->Book[1]->Author[1]->name = 'Voltaire';
+        $user->save();
+
+        $this->connection->clear();
+    }
+    public function testMultipleOneToManyFetching2() {
+        $query = new Doctrine_Query();
+
+        $users = $query->query("FROM User.Album.Song, User.Book.Author WHERE User.id IN (4,5)");
+        
+        $this->assertEqual($users->count(), 2);
+
+        $this->assertEqual($users[0]->id, 4);
+        $this->assertEqual($users[0]->Album[0]->name, 'Damage Done');
+        $this->assertEqual($users[0]->Album[0]->Song[0]->title, 'Damage Done');
+        $this->assertEqual($users[0]->Album[0]->Song[1]->title, 'The Treason Wall');
+        $this->assertEqual($users[0]->Album[0]->Song[2]->title, 'Monochromatic Stains');
+        $this->assertEqual($users[0]->Album[1]->name, 'Haven');
+        $this->assertEqual($users[0]->Album[1]->Song[0]->title, 'Not Built To Last');
+        $this->assertEqual($users[0]->Album[1]->Song[1]->title, 'The Wonders At Your Feet');
+        $this->assertEqual($users[0]->Album[1]->Song[2]->title, 'Feast Of Burden');
+        $this->assertEqual($users[0]->Album[1]->Song[3]->title, 'Fabric');
+        
+        $this->assertEqual($users[0]->Book[0]->Author[0]->name, 'Niccolo Machiavelli');
+        $this->assertEqual($users[0]->Book[0]->Author[1]->name, 'Someone');
+        $this->assertEqual($users[0]->Book[1]->name, 'The Art of War');
+        $this->assertEqual($users[0]->Book[1]->Author[0]->name, 'Someone');
+        $this->assertEqual($users[0]->Book[1]->Author[1]->name, 'Niccolo Machiavelli');
+
+        $this->assertEqual($users[1]->id, 5);
+        $this->assertEqual($users[1]->Album[0]->name, 'Clayman');
+        $this->assertEqual($users[1]->Album[1]->name, 'Colony');
+        $this->assertEqual($users[1]->Album[1]->Song[0]->title, 'Colony');
+        $this->assertEqual($users[1]->Album[1]->Song[1]->title, 'Ordinary Story');
+
+        $this->assertEqual($users[1]->Book[0]->name, 'Zadig');
+        $this->assertEqual($users[1]->Book[0]->Author[0]->name, 'Voltaire');
+        $this->assertEqual($users[1]->Book[0]->Author[1]->name, 'Someone');
+        $this->assertEqual($users[1]->Book[1]->name, 'Candide');
+        $this->assertEqual($users[1]->Book[1]->Author[0]->name, 'Someone');
+        $this->assertEqual($users[1]->Book[1]->Author[1]->name, 'Voltaire');
+    }
+
+    public function testMultipleOneToManyFetchingWithOrderBy() {
+        $query = new Doctrine_Query();
+
+        $users = $query->query("FROM User.Album.Song WHERE User.id IN (4,5) ORDER BY User.Album.Song.title DESC");
+    }
+}
diff --git a/tests/classes.php b/tests/classes.php
index e2745f4b4..5246b1554 100644
--- a/tests/classes.php
+++ b/tests/classes.php
@@ -625,4 +625,99 @@ class ValidatorTest_FootballPlayer extends Doctrine_Record {
    }
 } 
 
+class QueryTest_Category extends Doctrine_Record
+{    
+    /**
+     * The depth of the category inside the tree.
+     * Non-persistent field. 
+     * 
+     * @var integer
+     */
+    public $depth;
+    
+    /**
+     * Table definition.
+     */
+    public function setTableDefinition()
+    {        
+        $this->hasColumn('rootCategoryId as rootCategoryId', 'integer', 4,
+                array('default' => 0));
+        $this->hasColumn('parentCategoryId as parentCategoryId', 'integer', 4,
+                array('notnull', 'default' => 0));
+        $this->hasColumn('name as name', 'string', 50,
+                array('notnull', 'unique'));
+        $this->hasColumn('position as position', 'integer', 4,
+                array('default' => 0, 'notnull'));
+    }
+    
+    /**
+     * Relations definition.
+     */
+    public function setUp()
+    {
+        $this->ownsMany('QueryTest_Category as subCategories','subCategories.parentCategoryId');
+        $this->hasOne('QueryTest_Category as rootCategory','QueryTest_Category.rootCategoryId');
+        $this->ownsMany('QueryTest_Board as boards', 'QueryTest_Board.categoryId');
+    }
+}
+
+class QueryTest_Board extends Doctrine_Record
+{
+    /**
+     * Initializes the table definition.
+     */
+    public function setTableDefinition()
+    {        
+        $this->hasColumn('categoryId as categoryId', 'integer', 4,
+                array('notnull'));
+        $this->hasColumn('name as name', 'string', 100,
+                array('notnull', 'unique'));
+        $this->hasColumn('lastEntryId as lastEntryId', 'integer', 4,
+                array('default' => 0, 'notnull'));
+        $this->hasColumn('position as position', 'integer', 4,
+                array('default' => 0, 'notnull'));
+    }
+    
+    /**
+     * Initializes the relations.
+     */
+    public function setUp()
+    {
+        $this->hasOne('QueryTest_Category as category', 'QueryTest_Board.categoryId');
+        $this->ownsOne('QueryTest_Entry as lastEntry', 'QueryTest_Board.lastEntryId');
+    }
+}
+
+class QueryTest_Entry extends Doctrine_Record
+{
+    /**
+     * Table structure.
+     */
+    public function setTableDefinition()
+    {        
+        $this->hasColumn('authorId as authorId', 'integer', 4,
+                array('notnull'));
+        $this->hasColumn('date as date', 'integer', 4,
+                array('notnull'));
+    }
+    
+    /**
+     * Runtime definition of the relationships to other entities.
+     */
+    public function setUp()
+    {
+        $this->hasOne('QueryTest_User as author', 'QueryTest_Entry.authorId');
+    }
+}
+
+class QueryTest_User extends Doctrine_Record 
+{   
+
+    public function setTableDefinition()
+    {        
+        $this->hasColumn('username as username', 'string', 50,
+                array('notnull', 'unique'));
+    }
+}
+    
 ?>
diff --git a/tests/run.php b/tests/run.php
index 76d389b17..8729c8a84 100644
--- a/tests/run.php
+++ b/tests/run.php
@@ -202,6 +202,8 @@ $test->addTestCase(new Doctrine_CustomResultSetOrderTestCase());
 
 $test->addTestCase(new Doctrine_Query_MultiJoin_TestCase());
 
+$test->addTestCase(new Doctrine_Query_MultiJoin2_TestCase());
+
 $test->addTestCase(new Doctrine_Query_ReferenceModel_TestCase());
 
 $test->addTestCase(new Doctrine_Query_ComponentAlias_TestCase());