文章转自:http://hi.baidu.com/hi_oracle/item/ca7ed546f8f6e230fb896055 点击打开链接
Java代码
- @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等)
以上是基本常用注解,下面是例子说明
Java代码
- @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 省略....
- }