这是去年项目中遇到的.想起来这个问题了.
因为当时这版本没有一个注解可以在根据Model在逆向生成数据库时自动生成列注释,不方便,在网上找着了解决办法,不知道现在版本有没有实现这功能
https://hibernate.onjira.com/browse/HHH-4369
1. Index: src/java/org/hibernate/cfg/Ejb3Column.java
--- src/java/org/hibernate/cfg/Ejb3Column.java (Revision 14468)
+++ src/java/org/hibernate/cfg/Ejb3Column.java (Arbeitskopie)
@@ -144,6 +144,10 @@
public boolean isNullable() {
return mappingColumn.isNullable();
}
+
+ public void setComment(String comment) {
+ this.mappingColumn.setComment(comment);
+ }
public Ejb3Column() {
}
2. Index: src/java/org/hibernate/cfg/annotations/EntityBinder.java
--- src/java/org/hibernate/cfg/annotations/EntityBinder.java (Revision 14468)
+++ src/java/org/hibernate/cfg/annotations/EntityBinder.java (Arbeitskopie)
@@ -402,7 +402,8 @@
public void bindTable(
String schema, String catalog,
String tableName, List uniqueConstraints,
- String constraints, Table denormalizedSuperclassTable
+ String constraints, Table denormalizedSuperclassTable,
+ String comment
) {
String logicalName = StringHelper.isNotEmpty( tableName ) ?
tableName :
@@ -414,6 +415,10 @@
persistentClass.isAbstract(), uniqueConstraints, constraints,
denormalizedSuperclassTable, mappings
);
+
+ if ( (comment != null) && (comment.length() > 0) ) {
+ table.setComment(comment);
+ }
if ( persistentClass instanceof TableOwner ) {
if ( log.isInfoEnabled() ) {
3. Index: src/java/org/hibernate/cfg/AnnotationBinder.java
--- src/java/org/hibernate/cfg/AnnotationBinder.java (Revision 14468)
+++ src/java/org/hibernate/cfg/AnnotationBinder.java (Arbeitskopie)
@@ -65,6 +65,7 @@
import org.hibernate.annotations.CollectionId;
import org.hibernate.annotations.CollectionOfElements;
import org.hibernate.annotations.Columns;
+import org.hibernate.annotations.Comment;
import org.hibernate.annotations.Fetch;
import org.hibernate.annotations.Filter;
import org.hibernate.annotations.FilterDef;
@@ -421,6 +422,7 @@
String schema = "";
String table = ""; //might be no @Table annotation on the annotated class
String catalog = "";
+ String comment = "";
String discrimValue = null;
List<String[]> uniqueConstraints = new ArrayList<String[]>();
Ejb3DiscriminatorColumn discriminatorColumn = null;
@@ -433,6 +435,11 @@
catalog = tabAnn.catalog();
uniqueConstraints = TableBinder.buildUniqueConstraints( tabAnn.uniqueConstraints() );
}
+ if ( annotatedClass.isAnnotationPresent( org.hibernate.annotations.Comment.class ) ) {
+ org.hibernate.annotations.Comment commentAnn = annotatedClass.getAnnotation( org.hibernate.annotations.Comment.class );
+ comment = commentAnn.value();
+ }
+
final boolean hasJoinedColumns = inheritanceState.hasParents
&& InheritanceType.JOINED.equals( inheritanceState.type );
if ( hasJoinedColumns ) {
@@ -554,7 +561,8 @@
schema, catalog, table, uniqueConstraints,
constraints, inheritanceState.hasDenormalizedTable() ?
superEntity.getTable() :
- null
+ null,
+ comment
);
}
else {
@@ -1087,7 +1095,7 @@
"Processing annotations of " + propertyHolder.getEntityName() + "." + inferredData.getPropertyName()
);
}
-
+
if ( property.isAnnotationPresent( Parent.class ) ) {
if ( propertyHolder.isComponent() ) {
propertyHolder.setParentProperty( property.getName() );
@@ -1596,6 +1604,23 @@
}
}
}
+
+ /*
+ * Now process column comments
+ */
+ Comment comment = property.getAnnotation( Comment.class );
+ if ( comment != null ) {
+ if ( joinColumns != null ) {
+ for ( Ejb3Column column : joinColumns ) {
+ column.setComment( comment.value() );
+ }
+ }
+ else {
+ for ( Ejb3Column column : columns ) {
+ column.setComment( comment.value() );
+ }
+ }
+ }
}
//TODO move that to collection binder?
4. Index: build.xml
--- build.xml (Revision 14468)
+++ build.xml (Arbeitskopie)
@@ -16,7 +16,7 @@
<!-- Name of project and version, used to create filenames -->
<property name="Name" value="Hibernate Annotations"/>
<property name="name" value="hibernate-annotations"/>
- <property name="version" value="3.3.0.GA"/>
+ <property name="version" value="3.3.0.GA.comments"/>
<property name="javadoc.packagenames" value="org.hibernate.*"/>
<property name="jdbc.dir" value="jdbc"/>
<property name="copy.test" value="true"/>