JPA注解:根据实体生成数据表和字段的注释(正向工程)

简介: JPA注解:根据实体生成数据表和字段的注释(正向工程)

1.JPA常见注解


  1. 请移步:http://blog.csdn.net/fly910905/article/details/78140411


2.JPA注解:表注释


  1. @org.hibernate.annotations.Table(appliesTo = "TableName",comment="表注释")
  2. /*
  3. * Hibernate, Relational Persistence for Idiomatic Java
  4. *
  5. * License: GNU Lesser General Public License(LGPL), version 2.1 or later.
  6. * See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
  7. */
  8. package org.hibernate.annotations;
  9. import java.lang.annotation.Retention;
  10. import java.lang.annotation.Target;
  11. importstatic java.lang.annotation.ElementType.TYPE;
  12. importstatic java.lang.annotation.RetentionPolicy.RUNTIME;
  13. /**
  14. * Complementary information to a table either primary or secondary.
  15. *
  16. * @author Emmanuel Bernard
  17. */
  18. @Target({TYPE})
  19. @Retention(RUNTIME)
  20. public@interface Table {
  21. /**
  22. * name of the targeted table.
  23. */
  24. String appliesTo();
  25. /**
  26. * Indexes.
  27. */
  28. Index[] indexes() default {};
  29. /**
  30. * define a table comment.
  31. */
  32. String comment()default"";
  33. /**
  34. * Defines the Foreign Key name of a secondary table pointing back to the primary table.
  35. */
  36. ForeignKey foreignKey()default@ForeignKey( name="" );
  37. /**
  38. * If set to JOIN, the default, Hibernate will use an inner join to retrieve a
  39. * secondary table defined by a classor its superclasses and an outer join for a
  40. * secondary table defined by a subclass.
  41. * If set to select then Hibernate will use a
  42. * sequential select for a secondary table defined on a subclass, which will be issued only if a row
  43. * turns out to represent an instance of the subclass. Inner joins will still be used to retrieve a
  44. * secondary defined by the classand its superclasses.
  45. *
  46. * <b>Only applies to secondary tables</b>
  47. */
  48. FetchMode fetch()default FetchMode.JOIN;
  49. /**
  50. * If true, Hibernate will not try to insert or update the properties defined by this join.
  51. *
  52. * <b>Only applies to secondary tables</b>
  53. */
  54. booleaninverse()defaultfalse;
  55. /**
  56. * If enabled, Hibernate will insert a row only if the properties defined by this join are non-null
  57. * and will always use an outer join to retrieve the properties.
  58. *
  59. * <b>Only applies to secondary tables</b>
  60. */
  61. booleanoptional()defaulttrue;
  62. /**
  63. * Defines a custom SQL insert statement.
  64. *
  65. * <b>Only applies to secondary tables</b>
  66. */
  67. SQLInsert sqlInsert()default@SQLInsert(sql="");
  68. /**
  69. * Defines a custom SQL update statement.
  70. *
  71. * <b>Only applies to secondary tables</b>
  72. */
  73. SQLUpdate sqlUpdate()default@SQLUpdate(sql="");
  74. /**
  75. * Defines a custom SQL delete statement.
  76. *
  77. * <b>Only applies to secondary tables</b>
  78. */
  79. SQLDelete sqlDelete()default@SQLDelete(sql="");
  80. }


3.JPA注解:字段注释


  1. @Column(name="columnComment",columnDefinition="varchar(200) COMMENT '字段注释'")  
  2. /*
  3. * Copyright (c) 2008, 2009, 2011 Oracle, Inc. All rights reserved.
  4. *
  5. * This program and the accompanying materials are made available under the
  6. * terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0
  7. * which accompanies this distribution.  The Eclipse Public License is available
  8. * at http://www.eclipse.org/legal/epl-v10.html and the Eclipse Distribution License
  9. * is available at http://www.eclipse.org/org/documents/edl-v10.php.
  10. */
  11. package javax.persistence;
  12. import java.lang.annotation.Retention;
  13. import java.lang.annotation.Target;
  14. importstatic java.lang.annotation.ElementType.FIELD;
  15. importstatic java.lang.annotation.ElementType.METHOD;
  16. importstatic java.lang.annotation.RetentionPolicy.RUNTIME;
  17. /**
  18. * Is used to specify the mapped column for a persistent property or field.
  19. * If no <code>Column</code> annotation is specified, the default values apply.
  20. *
  21. * <blockquote><pre>
  22. *    Example 1:
  23. *
  24. *    &#064;Column(name="DESC", nullable=false, length=512)
  25. *    public String getDescription() { return description; }
  26. *
  27. *    Example 2:
  28. *
  29. *    &#064;Column(name="DESC",
  30. *            columnDefinition="CLOB NOT NULL",
  31. *            table="EMP_DETAIL")
  32. *    &#064;Lob
  33. *    public String getDescription() { return description; }
  34. *
  35. *    Example 3:
  36. *
  37. *    &#064;Column(name="ORDER_COST", updatable=false, precision=12, scale=2)
  38. *    public BigDecimal getCost() { return cost; }
  39. *
  40. * </pre></blockquote>
  41. *
  42. *
  43. * @since Java Persistence 1.0
  44. */
  45. @Target({METHOD, FIELD})
  46. @Retention(RUNTIME)
  47. public@interface Column {
  48.    /**
  49.     * (Optional) The name of the column. Defaults to
  50. * the property or field name.
  51.     */
  52.    String name()default"";
  53.    /**
  54.     * (Optional) Whether the column is a unique key.  This is a
  55.     * shortcut for the <code>UniqueConstraint</code> annotation at the table
  56.     * level and is useful for when the unique key constraint
  57.     * corresponds to only a single column. This constraint applies
  58.     * in addition to any constraint entailed by primary key mapping and
  59.     * to constraints specified at the table level.
  60.     */
  61.    booleanunique()defaultfalse;
  62.    /**
  63.     * (Optional) Whether the database column is nullable.
  64.     */
  65.    booleannullable()defaulttrue;
  66.    /**
  67.     * (Optional) Whether the column is included in SQL INSERT
  68.     * statements generated by the persistence provider.
  69.     */
  70.    booleaninsertable()defaulttrue;
  71.    /**
  72.     * (Optional) Whether the column is included in SQL UPDATE
  73.     * statements generated by the persistence provider.
  74.     */
  75.    booleanupdatable()defaulttrue;
  76.    /**
  77.     * (Optional) The SQL fragment that is used when
  78.     * generating the DDL for the column.
  79.     * <p> Defaults to the generated SQL to create a
  80.     * column of the inferred type.
  81.     */
  82.    String columnDefinition()default"";
  83.    /**
  84.     * (Optional) The name of the table that contains the column.
  85. * If absent the column is assumed to be in the primary table.
  86.     */
  87.    String table()default"";
  88.    /**
  89.     * (Optional) The column length. (Applies only if a
  90.     * string-valued column is used.)
  91.     */
  92.    intlength()default255;
  93.    /**
  94.     * (Optional) The precision for a decimal(exact numeric)
  95. * column. (Applies only if a decimal column is used.)
  96.     * Value must be set by developer if used when generating
  97.     * the DDL for the column.
  98.     */
  99.    intprecision()default0;
  100.    /**
  101.     * (Optional) The scale for a decimal(exact numeric) column.
  102.     * (Applies only if a decimal column is used.)
  103.     */
  104.    intscale()default0;
  105. }


4.示例:


4.1实体(实体中使用了Swagger,不需要的可去掉):


  1. package com.newcapec.dao.domain;
  2. import io.swagger.annotations.ApiModel;
  3. import io.swagger.annotations.ApiModelProperty;
  4. import javax.persistence.Column;
  5. import javax.persistence.Entity;
  6. import javax.persistence.GeneratedValue;
  7. import javax.persistence.Id;
  8. import java.util.Date;
  9. importstatic javax.persistence.GenerationType.AUTO;
  10. /**
  11. * @Title: 用户报名缴费信息实体
  12. * @ClassName: com.newcapec.dao.domain.UserEnrollPay.java
  13. * @Description: 位于校内的报名系统--中间库上
  14. *
  15. * @Copyright2016-2017 新开普 - Powered By 研发中心
  16. * @author: 王延飞
  17. * @date:  2017-12-1315:31
  18. * @version V1.0
  19. */
  20. @Entity
  21. @org.hibernate.annotations.Table(appliesTo = "user_enroll_pay",comment="用户报名缴费信息")
  22. @ApiModel("Person(用户报名缴费信息)")
  23. publicclassUserEnrollPay {
  24.    @Id
  25.    @GeneratedValue(strategy = AUTO)
  26.    @Column(name = "id", unique = true, nullable = false,columnDefinition="bigint(20) COMMENT '主键id'")
  27.    @ApiModelProperty("主键id")
  28.    private Long id;
  29.    /**
  30.     * 证件号
  31.     */
  32.    @Column(columnDefinition="varchar(20) COMMENT '证件号'")
  33.    @ApiModelProperty("证件号")
  34.    private String idserial;
  35.    /**
  36.     * 订单金额
  37.     */
  38.    @Column(columnDefinition = "Decimal(10,2) COMMENT '订单金额'", scale = 2 ,precision=10)
  39.    @ApiModelProperty("订单金额")
  40.    privatedouble orderamt;
  41.    /**
  42.     * 支付时间
  43.     */
  44.    @Column(columnDefinition="datetime COMMENT '支付时间'")
  45.    @ApiModelProperty("支付时间")
  46.    private Date paytime;
  47.    /**
  48.     * 支付标志
  49.     * 0-未支付
  50.     * 1-支付中
  51.     * 2-支付成功
  52.     * 3-支付失败
  53.     * 4-已过期
  54.     * 5-已取消
  55.     */
  56.    @Column(columnDefinition="int(2) COMMENT '支付标志 0-未支付 1-支付中 2-支付成功 3-支付失败 4-已过期 5-已取消'")
  57.    @ApiModelProperty("支付标志 0-未支付 1-支付中 2-支付成功 3-支付失败 4-已过期 5-已取消")
  58.    private Integer payflag;
  59.    public Long getId() {
  60.        return id;
  61.    }
  62.    publicvoidsetId(Long id) {
  63.        this.id = id;
  64.    }
  65.    public String getIdserial() {
  66.        return idserial;
  67.    }
  68.    publicvoidsetIdserial(String idserial) {
  69.        this.idserial = idserial;
  70.    }
  71.    publicdoublegetOrderamt() {
  72.        return orderamt;
  73.    }
  74.    publicvoidsetOrderamt(double orderamt) {
  75.        this.orderamt = orderamt;
  76.    }
  77.    public Date getPaytime() {
  78.        return paytime;
  79.    }
  80.    publicvoidsetPaytime(Date paytime) {
  81.        this.paytime = paytime;
  82.    }
  83.    public Integer getPayflag() {
  84.        return payflag;
  85.    }
  86.    publicvoidsetPayflag(Integer payflag) {
  87.        this.payflag = payflag;
  88.    }
  89.    @Override
  90.    public String toString() {
  91.        return"UserEnrollPay{" +
  92.                "id=" + id +
  93.                ", idserial='" + idserial + '\'' +
  94.                ", orderamt=" + orderamt +
  95.                ", paytime=" + paytime +
  96.                ", payflag=" + payflag +
  97.                '}';
  98.    }
  99. }


4.2生成的数据表


  1. CREATETABLE `user_enroll_pay` (
  2.  `id` bigint(20) NOTNULL AUTO_INCREMENT COMMENT '主键id',
  3.  `idserial` varchar(20) COLLATE utf8_unicode_ci DEFAULTNULL COMMENT '证件号',
  4.  `orderamt` decimal(10,2) DEFAULTNULL COMMENT '订单金额',
  5.  `payflag` int(2) DEFAULTNULL COMMENT '支付标志 0-未支付 1-支付中 2-支付成功 3-支付失败 4-已过期 5-已取消',
  6.  `paytime` datetime DEFAULTNULL COMMENT '支付时间',
  7.  PRIMARY KEY (`id`)
  8. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='用户报名缴费信息';


目录
相关文章
|
5月前
|
SQL 前端开发 Java
若依修改03----利用若依代码生成器,生成课程管理的前后端代码,课程的条件搜索接口,一旦数据表创建好了,直接交给若依代码的生成器就好了,配置代码生成信息,包含基本信息,字段信息,生成信息。字段信息决
若依修改03----利用若依代码生成器,生成课程管理的前后端代码,课程的条件搜索接口,一旦数据表创建好了,直接交给若依代码的生成器就好了,配置代码生成信息,包含基本信息,字段信息,生成信息。字段信息决
|
6月前
|
监控 Java
记录页面修改差异(java注解实现)
记录页面修改差异(java注解实现)
|
7月前
|
SQL
将查询出来数据中相对应的字段根据枚举类更改为其中文内容
将查询出来数据中相对应的字段根据枚举类更改为其中文内容
|
7月前
|
Java 数据库连接 数据库
hibernate多对多、正向工程创建数据表——访问温馨提示
hibernate多对多、正向工程创建数据表——访问温馨提示
|
7月前
|
Java 关系型数据库 MySQL
JPA中实体类属性相关注解与数据表列映射详解
JPA中实体类属性相关注解与数据表列映射详解
373 0
|
XML 数据格式
FastReport自动提取表的逻辑
FastReport自动提取表的逻辑
|
数据库管理
Powerdesigner设置表字段注释与name相同
Powerdesigner设置表字段注释与name相同
266 1
Powerdesigner设置表字段注释与name相同
|
IDE 开发工具
实体类的属性映射怎么可以少了它?(二)
我们都知道,随着一个工程的越来越成熟,模块划分会越来越细,其中实体类一般存于 domain 之中,但 domain 工程最好不要被其他工程依赖,所以其他工程想获取实体类数据时就需要在各自工程写 model,自定义 model 可以根据自身业务需要映射相应的实体属性。这样一来,这个映射工程貌似并不简单了。阿粉差点就犯难了……
实体类的属性映射怎么可以少了它?(二)
|
IDE 开发工具
实体类的属性映射怎么可以少了它?(四)
我们都知道,随着一个工程的越来越成熟,模块划分会越来越细,其中实体类一般存于 domain 之中,但 domain 工程最好不要被其他工程依赖,所以其他工程想获取实体类数据时就需要在各自工程写 model,自定义 model 可以根据自身业务需要映射相应的实体属性。这样一来,这个映射工程貌似并不简单了。阿粉差点就犯难了……
实体类的属性映射怎么可以少了它?(四)
|
IDE 开发工具
实体类的属性映射怎么可以少了它?(三)
我们都知道,随着一个工程的越来越成熟,模块划分会越来越细,其中实体类一般存于 domain 之中,但 domain 工程最好不要被其他工程依赖,所以其他工程想获取实体类数据时就需要在各自工程写 model,自定义 model 可以根据自身业务需要映射相应的实体属性。这样一来,这个映射工程貌似并不简单了。阿粉差点就犯难了……
实体类的属性映射怎么可以少了它?(三)