Hibernate annotation

@Entity                          --声明为一个实体bean    
@Table(name="promotion_info")    --为实体bean映射指定表(表名="promotion_info)    
@Id                              --声明了该实体bean的标识属性    
@GeneratedValue                  --可以定义标识字段的生成策略.    
@Transient                       --将忽略这些字段和属性,不用持久化到数据库    
@Column(name="promotion_remark")--声明列(字段名="promotion_total") 属性还包括(length=200等)    
@Temporal(TemporalType.TIMESTAMP)--声明时间格式    
@Enumerated                      --声明枚举    
@Version                         --声明添加对乐观锁定的支持    
@OneToOne                        --可以建立实体bean之间的一对一的关联    
@OneToMany                       --可以建立实体bean之间的一对多的关联    
@ManyToOne                       --可以建立实体bean之间的多对一的关联    
@ManyToMany                      --可以建立实体bean之间的多对多的关联    
@Formula                         --一个SQL表达式,这种属性是只读的,不在数据库生成属性(可以使用sum、average、max等)   

 以上是基本常用注解,下面是例子说明

@Entity   
@Table(name="promotion_info")    
public class Promotion implements Serializable {    
   
    //AUTO--可以是identity类型的字段,或者sequence类型或者table类型,取决于不同的底层数据库    
    @Id    
    @GeneratedValue(strategy = GenerationType.AUTO)    
    private Long id;    
   
    @Column(name="group_start_amount")    
    private Integer groupStartAmount=0;    
        
    @Column(name="promotion_remark",length=200)    
    //@Lob 如果是文章内容可以使用 只需要把length=200去掉就可以了    
    private String remark;    
    //DATE       - java.sql.Date    
    //TIME       - java.sql.Time    
    //TIMESTAMP - java.sql.Timestamp    
    @Temporal(TemporalType.TIMESTAMP)    
    @Column(name="start_time")    
    private Date startTime;    
   
    //显示0 隐藏1    
    public static enum DisplayType {    
         显示,隐藏    
     }    
    @Enumerated(value = EnumType.ORDINAL)//ORDINAL序数    
    private DisplayType displayType = DisplayType.显示;    
   
    @Version   
    private Integer version;    
   
    //CascadeType.PERSIST    -- 触发级联创建(create)    
    //CascadeType.MERGE      -- 触发级联合并(update)    
    //FetchType.LAZY         -- 延迟加载    
    @ManyToOne(cascade = {CascadeType.PERSIST,CascadeType.MERGE},fetch = FetchType.LAZY)    
    private PromotionGroup promotionGroup;    
   
    //单向ManyToMany    
    //@JoinTable(关联的表名)    
    //joinColumns -- promotion关联的列的外键    
    //inverseJoinColumns -- largess 关联列的外键    
    @ManyToMany(cascade = {CascadeType.PERSIST,CascadeType.MERGE})    
    @JoinTable(name="promotion_largess",joinColumns={@JoinColumn(name="promotion_id")},inverseJoinColumns={@JoinColumn(name="largess_id")})    
    private Set<Largess> largess;    
   
    //get set 省略....    
   
}    
@Entity   
@Table(name="promotion_group")    
public class PromotionGroup implements Serializable {    
    @Id    
    @GeneratedValue(strategy = GenerationType.AUTO)    
    private Long id;    
        
    //mappedBy的值"promotionGroup"指向owner(Promotion)端的关联属性,并且是双向关系    
    @OneToMany(mappedBy="promotionGroup",cascade=CascadeType.ALL)    
    private List<Promotion> promotion;    
   
    //get set 省略....    
}    
@Entity   
@Table(name="largess")    
public class Largess implements Serializable {    
    @Id    
    @GeneratedValue(strategy = GenerationType.AUTO)    
    private Long id;    
   
    //1.sql语句中的字段和表名都应该和数据库相应,而不是类中的字段,    
    //若带有参数如la.id= id,这个=id才是类中属性    
    //2.操作字段一定要用别名    
    @Formula(select max(la.id) from largess as la)    
    private int maxId;    
   
    @Formula(select COUNT(la.id) from largess la)    
    private int count;    
   
    @Transient   
    private String img    
   
    //get set 省略....    
}   

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值