diff --git a/cayenne-cgen/src/main/resources/templates/v4_1/singleclass.vm b/cayenne-cgen/src/main/resources/templates/v4_1/singleclass.vm
index ed607be..aee42bd 100644
--- a/cayenne-cgen/src/main/resources/templates/v4_1/singleclass.vm
+++ b/cayenne-cgen/src/main/resources/templates/v4_1/singleclass.vm
@@ -50,6 +50,12 @@
 #end
 ${importUtils.generate()}
 
+#set ( $comment = ${metadataUtils.getComment($object)} )
+#if ( $comment )
+/**
+ * $comment
+ */
+#end
 public#if("true" == "${object.isAbstract()}") abstract#end class ${subClassName} extends ${baseClassName} {
 
     private static final long serialVersionUID = 1L;
diff --git a/cayenne-cgen/src/main/resources/templates/v4_1/superclass.vm b/cayenne-cgen/src/main/resources/templates/v4_1/superclass.vm
index a269bbb..49c0ff9 100644
--- a/cayenne-cgen/src/main/resources/templates/v4_1/superclass.vm
+++ b/cayenne-cgen/src/main/resources/templates/v4_1/superclass.vm
@@ -57,6 +57,12 @@
  * It is probably a good idea to avoid changing this class manually,
  * since it may be overwritten next time code is regenerated.
  * If you need to make any customizations, please use subclass.
+#set ( $comment = ${metadataUtils.getComment($object)} )
+#if ( $comment )
+ *
+ * $comment
+ *
+#end
  */
 public abstract class ${superClassName} extends ${baseClassName} {
 
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/testmap/auto/_Artist.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/testmap/auto/_Artist.java
index fa1545d..8474a22 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/testmap/auto/_Artist.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/testmap/auto/_Artist.java
@@ -21,6 +21,9 @@
  * It is probably a good idea to avoid changing this class manually,
  * since it may be overwritten next time code is regenerated.
  * If you need to make any customizations, please use subclass.
+ *
+ * Example of a comment
+ *
  */
 public abstract class _Artist extends BaseDataObject {
 
diff --git a/cayenne-server/src/test/resources/testmap.map.xml b/cayenne-server/src/test/resources/testmap.map.xml
index 5ec09e0..e7727c8 100644
--- a/cayenne-server/src/test/resources/testmap.map.xml
+++ b/cayenne-server/src/test/resources/testmap.map.xml
@@ -87,6 +87,7 @@
 	<obj-entity name="Artist" className="org.apache.cayenne.testdo.testmap.Artist" dbEntityName="ARTIST">
 		<obj-attribute name="artistName" type="java.lang.String" db-attribute-path="ARTIST_NAME"/>
 		<obj-attribute name="dateOfBirth" type="java.util.Date" db-attribute-path="DATE_OF_BIRTH"/>
+		<info:property xmlns:info="http://cayenne.apache.org/schema/10/info" name="comment" value="Example of a comment"/>
 	</obj-entity>
 	<obj-entity name="ArtistCallback" className="org.apache.cayenne.testdo.testmap.ArtistCallback" dbEntityName="ARTIST_CT">
 		<obj-attribute name="artistName" type="java.lang.String"/>
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/CodeGeneratorController.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/CodeGeneratorController.java
index 1c863f0..88bfaa2 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/CodeGeneratorController.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/CodeGeneratorController.java
@@ -35,7 +35,10 @@
 
 import org.apache.cayenne.configuration.event.DataMapEvent;
 import org.apache.cayenne.configuration.event.DataMapListener;
+import org.apache.cayenne.configuration.xml.DataChannelMetaData;
+import org.apache.cayenne.dbsync.reverse.configuration.ToolsModule;
 import org.apache.cayenne.di.DIBootstrap;
+import org.apache.cayenne.di.Module;
 import org.apache.cayenne.di.spi.ModuleLoader;
 import org.apache.cayenne.gen.CgenConfiguration;
 import org.apache.cayenne.gen.ClassGenerationAction;
@@ -182,9 +185,12 @@
 
     public void generateAction() {
         CgenConfiguration cgenConfiguration = createConfiguration();
+        List<Module> modules = new ModuleLoader()
+                .load(CayenneToolsModuleProvider.class);
+        modules.add(binder -> binder.bind(DataChannelMetaData.class)
+                .toInstance(projectController.getApplication().getMetaData()));
         ClassGenerationAction generator = DIBootstrap
-                .createInjector(new ModuleLoader()
-                        .load(CayenneToolsModuleProvider.class))
+                .createInjector(modules)
                 .getInstance(ClassGenerationActionFactory.class)
                 .createAction(cgenConfiguration);
 
