声明jpa批注处理器_如何使用反射基于JPA批注记录您的数据模型
生活随笔
收集整理的這篇文章主要介紹了
声明jpa批注处理器_如何使用反射基于JPA批注记录您的数据模型
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
聲明jpa批注處理器
因此,當(dāng)您僅可以注釋Java類時(shí),使用JPA,Hibernate或EBeans很酷,但是您不是一直希望可以從代碼“生成”數(shù)據(jù)模型的文檔嗎? 提取JPA / Hibernate和其他驗(yàn)證注釋的信息?
假設(shè)您的bean中具有所有這些漂亮的注釋:
這是如何完成該任務(wù)的示例:
public static String listEntities(String _package) {StringBuffer retval = new StringBuffer();Reflections reflections = new Reflections(_package, Play.application().classloader());Set<Class<?>> classes = reflections.getTypesAnnotatedWith(javax.persistence.Entity.class);for (Class c : classes) {retval.append(c.getName() + "\n");retval.append(listAnnotations(c.getName()) + "\n\n");retval.append(listAttributes(c.getName()) + "\n\n");}return retval.toString();}public static String listAnnotations(String _class) {StringBuffer retval = new StringBuffer();try {Annotation[] annotations = Class.forName(_class).getAnnotations();if (annotations.length != 0) {for (int j = 0; j < annotations.length; j++) {retval.append(annotations[j].toString() + ": " + annotations[j].annotationType() + "\n");}retval.append("\n");}} catch (ClassNotFoundException e) {System.out.println(e.toString());return retval.toString();}return retval.toString();}public static String listAttributes(String _class) {StringBuffer retval2 = new StringBuffer();boolean perstistent = false;try {for (Field field : Class.forName(_class).getDeclaredFields()) {Class type = field.getType();String name = field.getName();perstistent = false;StringBuffer retval = new StringBuffer();retval.append("\t" + name + " (" + type + ")\n");Annotation[] annotations = field.getDeclaredAnnotations();if (annotations.length != 0) {for (int j = 0; j < annotations.length; j++) {retval.append(annotations[j].toString() + ": " + annotations[j].annotationType() + "\n");if (annotations[j].toString().startsWith("@javax.persistence")) {perstistent = true;}}retval.append("\n");}if (perstistent) {retval2.append(retval);}}} catch (ClassNotFoundException e) {System.out.println(e.toString());return retval2.toString();}return retval2.toString();}這將生成如下內(nèi)容:
models.controlling.Bill @javax.persistence.Table(schema=, uniqueConstraints=[], catalog=, name=project_bills): interface javax.persistence.Table @javax.persistence.Entity(name=): interface javax.persistence.Entityid (class java.lang.Long) @javax.persistence.Id(): interface javax.persistence.Id @javax.persistence.Column(insertable=true, scale=0, unique=false, precision=0, columnDefinition=, name=PBI_ID, updatable=true, length=255, nullable=true, table=): interface javax.persistence.ColumnbillAmount (class java.lang.Double) @utils.data.formatters.Formats$DoubleFormat(): interface utils.data.formatters.Formats$DoubleFormat @javax.persistence.Column(insertable=true, scale=0, unique=false, precision=0, columnDefinition=, name=PBI_BILL_AMOUNT, updatable=true, length=22, nullable=true, table=): interface javax.persistence.ColumnbillDate (class java.util.Date) @javax.persistence.Column(insertable=true, scale=0, unique=false, precision=0, columnDefinition=, name=PBI_BILL_DATE, updatable=true, length=255, nullable=true, table=): interface javax.persistence.Column @play.data.format.Formats$DateTime(pattern=dd.MM.yyyy): interface play.data.format.Formats$DateTimebillNumber (class java.lang.String) @javax.persistence.Column(insertable=true, scale=0, unique=false, precision=0, columnDefinition=, name=PBI_BILL_NUMBER, updatable=true, length=10, nullable=true, table=): interface javax.persistence.Column 當(dāng)然,這只是冰山一角,但是您明白了。
翻譯自: https://www.javacodegeeks.com/2013/07/how-to-use-reflection-to-document-your-data-model-based-on-jpa-annotations.html
聲明jpa批注處理器
總結(jié)
以上是生活随笔為你收集整理的声明jpa批注处理器_如何使用反射基于JPA批注记录您的数据模型的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 医疗器械许可备案系统查询(医疗器械许可备
- 下一篇: 猩猩助手安卓模拟器下载(猩猩助手安卓模拟