- Fix prefetch of the entity with lazy attributes
- Enable tests for that
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/PrefetchProcessorJointNode.java b/cayenne-server/src/main/java/org/apache/cayenne/access/PrefetchProcessorJointNode.java
index ccf8a46..9d72ddc 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/access/PrefetchProcessorJointNode.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/access/PrefetchProcessorJointNode.java
@@ -197,7 +197,9 @@
 
             public boolean visitAttribute(AttributeProperty property) {
                 String target = property.getAttribute().getDbAttributePath();
-                appendColumn(targetSource, target, prefix + target);
+                if(!property.getAttribute().isLazy()) {
+                    appendColumn(targetSource, target, prefix + target);
+                }
                 return true;
             }
 
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/Cay2641.java b/cayenne-server/src/test/java/org/apache/cayenne/access/Cay2641IT.java
similarity index 89%
rename from cayenne-server/src/test/java/org/apache/cayenne/access/Cay2641.java
rename to cayenne-server/src/test/java/org/apache/cayenne/access/Cay2641IT.java
index e10be4b..98d51b8 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/access/Cay2641.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/access/Cay2641IT.java
@@ -39,14 +39,13 @@
 import java.sql.Types;
 import java.util.List;
 
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.*;
 
 /**
  * @since 4.2
  */
 @UseServerRuntime(CayenneProjects.CAY_2641)
-public class Cay2641 extends ServerCase {
+public class Cay2641IT extends ServerCase {
 
     @Inject
     private ObjectContext context;
@@ -80,7 +79,7 @@
         assertFalse(sql.contains("t0.NAME"));
 
         String string = "SELECT t0.SURNAME, t0.ID FROM ArtistLazy t0";
-        assertTrue(sql.equals(string));
+        assertEquals(sql, string);
 
         ColumnSelect<String> select = ObjectSelect.columnQuery(ArtistLazy.class, ArtistLazy.NAME);
         translator = new DefaultSelectTranslator(select, adapter, context.getEntityResolver());
@@ -97,7 +96,7 @@
         assertTrue(object instanceof Fault);
 
         object = artists.get(0).readPropertyDirectly("surname");
-        assertTrue(object.equals("artist2"));
+        assertEquals("artist2", object);
     }
 
     @Test
@@ -109,7 +108,7 @@
 
         artist.getName();
         object = artist.readPropertyDirectly("name");
-        assertTrue(object.equals("artist1"));
+        assertEquals("artist1", object);
     }
 
     @Test
@@ -119,31 +118,33 @@
         String sql = translator.getSql();
         assertFalse(sql.contains("t0.NAME"));
 
-        String string = "SELECT DISTINCT t0.ARTIST_ID, t0.ID, t1.ID, t1.SURNAME FROM PaintingLazy t0 LEFT JOIN ArtistLazy t1 ON t0.ARTIST_ID = t1.ID";
-        assertTrue(sql.equals(string));
+        String string = "SELECT t0.ARTIST_ID, t0.ID, t1.ID, t1.SURNAME FROM PaintingLazy t0 LEFT JOIN ArtistLazy t1 ON t0.ARTIST_ID = t1.ID";
+        assertEquals(sql, string);
     }
 
     @Test
     public void testPrefetchLazyTypeAttributes() {
-        List<PaintingLazy> paintingLazyList = ObjectSelect.query(PaintingLazy.class).prefetch(PaintingLazy.ARTIST.joint()).select(context);
+        List<PaintingLazy> paintingLazyList = ObjectSelect.query(PaintingLazy.class)
+                .prefetch(PaintingLazy.ARTIST.joint())
+                .select(context);
 
         Object object = paintingLazyList.get(0).readPropertyDirectly("name");
         assertTrue(object instanceof Fault);
 
         object = paintingLazyList.get(0).getName();
         assertTrue(object instanceof String);
-        assertTrue(object.equals("painting1"));
+        assertEquals("painting1", object);
 
         ArtistLazy artist = (ArtistLazy) paintingLazyList.get(0).readPropertyDirectly("artist");
         object = artist.readPropertyDirectly("name");
         assertTrue(object instanceof Fault);
 
         object = artist.readPropertyDirectly("surname");
-        assertTrue(object.equals("artist2"));
+        assertEquals("artist2", object);
 
         object = artist.getName();
         assertTrue(object instanceof String);
-        assertTrue(object.equals("artist1"));
+        assertEquals("artist1", object);
     }
 
     @Test
@@ -156,7 +157,7 @@
 
         object = artistLazies.get(0).readPropertyDirectly("surname");
         assertTrue(object instanceof String);
-        assertTrue(object.equals("artist2"));
+        assertEquals("artist2", object);
     }
 
     @Test