hibernate注解ENTITY

来源:互联网 发布:mac相簿照片怎么删除 编辑:程序博客网 时间:2024/06/05 05:20

表名和实体注解:注解为实体,表名
@Entity
@Table(name ="cs_ad")
-----------------------------------------------
字段默认注解@basic
----------------------------------------------
字符串注解 :非空"",最大长度,非null
     @NotEmpty  
   @Length(max = 200)
   @Column(nullable =false)
巨大字符串
  @Lob
------------------------------------------------

取消持久化
  @Transient
@Transient表示该属性并非一个到数据库表的字段的映射,ORM框架将忽略该属性.
如果一个属性并非数据库表的字段映射,就务必将其标示为@Transient,否则,ORM框架默认其注解为@Basic
    示例:
    //根据birth计算出age属性
    @Transient
    public int getAge() {
    return getYear(new Date()) - getYear(birth);
    }

这个东东还是挺有用的。


验证框架:不能为空,并且满足正则表达式,长度最小和最大值,不可以为null,唯一性,不可以更新
   @NotEmpty(groups = Save.class)
   @Pattern(regexp ="^[0-9a-z_A-Z\\u4e00-\\u9fa5]+$")
   @Length(min = 2, max = 20)
   @Column(nullable =false, updatable =false, unique =true, length = 100)

------------------------------------------
进行成员JSON映射声明,属于jackson机制
@JsonAutoDetect(fieldVisibility = Visibility.NONE, getterVisibility = Visibility.NONE, setterVisibility = Visibility.NONE, isGetterVisibility = Visibility.NONE, creatorVisibility = Visibility.NONE)

jackson的自动检测机制

jackson允许使用任意的构造方法或工厂方法来构造实例

使用@JsonAutoDetect(作用在类上)来开启/禁止自动检测

fieldVisibility:字段的可见级别

ANY:任何级别的字段都可以自动识别

NONE:所有字段都不可以自动识别

NON_PRIVATE:非private修饰的字段可以自动识别

PROTECTED_AND_PUBLIC:被protected和public修饰的字段可以被自动识别

PUBLIC_ONLY:只有被public修饰的字段才可以被自动识别


DEFAULT:同PUBLIC_ONLY
-----------------------------------------------------------------
声明实体监听器:用于实体修改时做处理(切面编程)
@EntityListeners(EntityListener.class)
---------------------------------------------------------
声明该类为实体父类··不会映射单独的而··而是把字段映射到子类表中
@MappedSuperclass
---------------------------------------------------------------------
@JsonProperty,序列化/反序列化都有效;

@JsonProperty
----------------------------------------------
4. @DocumentId
  用于保证索引实体的单一性。必须存储而且必须不能被分词(相当于加了@Field(store=Store.YES, index=Index.UN_TOKENIZED))
  采用JPA方式时,如果指定了@Id则不再需要标注该注解。
@GeneratedValue(strategy=GenerationType.AUTO)
----------------------------------------------------------
主键注解
            /**
             * 获取ID
             *
             *@returnID
             */
            @JsonProperty
            @DocumentId
            @Id
            @GeneratedValue(strategy=GenerationType.AUTO)
-------------------------------------------------------------------------------------
数据库索引有关
            @Field(store = Store.YES, index = Index. UN_TOKENIZED)
------------------------------------------------------------
时间索引,把时间转为字符串再做索引
@DateBridge(resolution = Resolution.SECOND)


枚举类型的注解
 @Enumerated
   @Column(columnDefinition ="tinyint", nullable =false)
------------------------------------------------------------------------------------
一对一外键关联主键
@OneToOne(fetch = FetchType.EAGER, cascade = CascadeType.REMOVE)
@JoinColumn(name = "uid", nullable =false)


boolean类型注解
@Column(columnDefinition ="bit", nullable =false)
------------------------------------------------------------------
整型注解
 @Column()
-----------------------------------------------
多对一注解
 @ManyToOne(fetch = FetchType. EAGER)
   @JoinColumn(name ="credit_level", updatable =false)
-----------------------------------------------------------------------------

0 0
原创粉丝点击