Hibernate注解
- @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 省略....
- }