CAY-2631 Can no longer use "byte[]" as root of scalar SQLSelect
diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt
index 7c31a98..05ba637 100644
--- a/RELEASE-NOTES.txt
+++ b/RELEASE-NOTES.txt
@@ -101,6 +101,7 @@
 CAY-2624 SelectQuery "having" qualifier is not considered when calculating cache key
 CAY-2627 Modeler: ObjRelationship creation dialog ignores delete rule
 CAY-2628 dbimport: unable to add several relationships to existing entity
+CAY-2631 Can no longer use "byte[]" as root of scalar SQLSelect
 
 ----------------------------------
 Release: 4.1.B1
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/SQLTemplateAction.java b/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/SQLTemplateAction.java
index c3029ab..118cdd6 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/SQLTemplateAction.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/SQLTemplateAction.java
@@ -317,7 +317,7 @@
 		ColumnDescriptor[] columnDescriptors = new ColumnDescriptor[size];
 		for(int i = 0; i < size; i++) {
 			ColumnDescriptor columnDescriptor = new ColumnDescriptor();
-			columnDescriptor.setJavaClass(query.getResultColumnsTypes().get(i).getName());
+			columnDescriptor.setJavaClass(query.getResultColumnsTypes().get(i).getCanonicalName());
 			columnDescriptors[i] = columnDescriptor;
 		}
 		return columnDescriptors;
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/query/SQLSelectIT.java b/cayenne-server/src/test/java/org/apache/cayenne/query/SQLSelectIT.java
index 57d4845..0a4e71e 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/query/SQLSelectIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/query/SQLSelectIT.java
@@ -58,14 +58,20 @@
 
 	private TableHelper tArtistCt;
 
+	private TableHelper tPaintingInfo;
+
 	@Before
 	public void before() {
 		tPainting = new TableHelper(dbHelper, "PAINTING")
-				.setColumns("PAINTING_ID", "PAINTING_TITLE", "ESTIMATED_PRICE").setColumnTypes(Types.INTEGER,
-						Types.VARCHAR, Types.DECIMAL);
+				.setColumns("PAINTING_ID", "PAINTING_TITLE", "ESTIMATED_PRICE")
+				.setColumnTypes(Types.INTEGER, Types.VARCHAR, Types.DECIMAL);
 
-		tArtistCt = new TableHelper(dbHelper, "ARTIST_CT");
-		tArtistCt.setColumns("ARTIST_ID", "ARTIST_NAME", "DATE_OF_BIRTH");
+		tArtistCt = new TableHelper(dbHelper, "ARTIST_CT")
+				.setColumns("ARTIST_ID", "ARTIST_NAME", "DATE_OF_BIRTH");
+
+		tPaintingInfo = new TableHelper(dbHelper, "PAINTING_INFO")
+				.setColumns("PAINTING_ID", "IMAGE_BLOB")
+				.setColumnTypes(Types.INTEGER, Types.LONGVARBINARY);
 	}
 
 	private void createPaintingsDataSet() throws Exception {
@@ -538,6 +544,18 @@
 		assertEquals(1L, ids.get(0).longValue());
 	}
 
+	@Test
+	public void testByteArray() throws Exception {
+		byte[] data = {1, 2, 3};
+		tPainting.insert(1, "test", 0);
+		tPaintingInfo.insert(1, data);
+
+		byte[] bytes = SQLSelect
+				.scalarQuery("SELECT IMAGE_BLOB FROM PAINTING_INFO", byte[].class)
+				.selectOne(context);
+		assertArrayEquals(data, bytes);
+	}
+
 	static class ArtistDataWrapper {
 		long id;
 		String name;