博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hibernate-annotation3.30 创建自定义注解,向oracle数据库写列注释
阅读量:7144 次
发布时间:2019-06-29

本文共 4028 字,大约阅读时间需要 13 分钟。

  hot3.png

这是去年项目中遇到的.想起来这个问题了.

因为当时这版本没有一个注解可以在根据Model在逆向生成数据库时自动生成列注释,不方便,在网上找着了解决办法,不知道现在版本有没有实现这功能

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   annotation on the annotated class 		String catalog = "";+		String comment = ""; 		String discrimValue = null; 		List
uniqueConstraints = new ArrayList
(); 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 @@ 	
-
+

转载于:https://my.oschina.net/i33/blog/80811

你可能感兴趣的文章
python-django开发学习笔记四
查看>>
cocos2d-x开发记录:二,基本概念(导演,场景,层和精灵,场景切换,效果)...
查看>>
Binutils工具集中的一些比较常用的工具
查看>>
jsp里面实现asp.net的Global文件内容。
查看>>
Oracle ROWID
查看>>
WCF服务通信测试
查看>>
dos命令dir查找文件的用法及实例
查看>>
Hadoop守护进程【简--】
查看>>
uboot中gd的定义和使用
查看>>
Tcpdump MySQL Query
查看>>
mac jdbc连接mysql
查看>>
Activity生命周期的学习以及Logcat的使用
查看>>
【TYVJ】1338 QQ农场(最大流+最大权闭合图)
查看>>
一个睡五分钟等于六个钟头的方法
查看>>
Material Designer的低版本兼容实现(五)—— ActivityOptionsCompat
查看>>
Mysql监控工具小集合
查看>>
POJ 1654 Area 计算几何
查看>>
Linux下Nginx+Tomcat整合的安装与配置
查看>>
Python的安装和详细配置(转)
查看>>
FloatingActionButton
查看>>