Hibernate annotation 使用筆記
?1
@Entity?????????????????????????
--
聲明為一個實體bean???
?2
@Table(name
=
"
promotion_info
"
)???
--
為實體bean映射指定表(表名
=
"
promotion_info)???
?3
@Id?????????????????????????????
--
聲明了該實體bean的標識屬性???
?4
@GeneratedValue?????????????????
--
可以定義標識字段的生成策略.???
?5
@Transient??????????????????????
--
將忽略這些字段和屬性,不用持久化到數據庫???
?6
@Column(name
=
"
promotion_remark
"
)
--
聲明列(字段名
=
"
promotion_total
"
)?屬性還包括(length
=
200等)???
?7
@Temporal(TemporalType.TIMESTAMP)
--
聲明時間格式???
?8
@Enumerated?????????????????????
--
聲明枚舉???
?9
@Version????????????????????????
--
聲明添加對樂觀鎖定的支持???
10
@OneToOne???????????????????????
--
可以建立實體bean之間的一對一的關聯???
11
@OneToMany??????????????????????
--
可以建立實體bean之間的一對多的關聯???
12
@ManyToOne??????????????????????
--
可以建立實體bean之間的多對一的關聯???
13
@ManyToMany?????????????????????
--
可以建立實體bean之間的多對多的關聯???
14
@Formula????????????????????????
--
一個SQL表達式,這種屬性是只讀的,不在數據庫生成屬性(可以使用sum、average、max等)???
15
@OrderBy????????????????????????
--
Many端某個字段排序(List)??
16

?2

?3

?4

?5

?6

?7

?8

?9

10

11

12

13

14

15

16

以上是基本常用注解,下面是例子說明
??1
@Entity??
??2
@Table(name="promotion_info")???
??3
public?class?Promotion?implements?Serializable?
{???
??4
??
??5
????//AUTO--可以是identity類型的字段,或者sequence類型或者table類型,取決于不同的底層數據庫???
??6
????@Id????
??7
????@GeneratedValue(strategy?=?GenerationType.AUTO)???
??8
????//對于oracle想使用各自的Sequence:???
??9
????//@GeneratedValue(strategy?=?GenerationType.AUTO,generator="PROMOTION_SEQ")???
?10
????//@SequenceGenerator(name="PROMOTION_SEQ",sequenceName="PROMOTION_SEQ")???
?11
????private?Long?id;???
?12
??
?13
????@Column(name="group_start_amount")???
?14
????private?Integer?groupStartAmount=0;???
?15
???????
?16
????@Column(name="promotion_remark",length=200)???
?17
????//@Lob?如果是文章內容可以使用?只需要把length=200去掉就可以了???
?18
????private?String?remark;???
?19
????//DATE??????-?java.sql.Date???
?20
????//TIME??????-?java.sql.Time???
?21
????//TIMESTAMP?-?java.sql.Timestamp???
?22
????@Temporal(TemporalType.TIMESTAMP)???
?23
????@Column(name="start_time")???
?24
????private?Date?startTime;???
?25
??
?26
????//顯示0?隱藏1???
?27
????public?static?enum?DisplayType?
{???
?28
????????顯示,隱藏???
?29
????}???
?30
????@Enumerated(value?=?EnumType.ORDINAL)//ORDINAL序數???
?31
????private?DisplayType?displayType?=?DisplayType.顯示;???
?32
??
?33
????@Version??
?34
????private?Integer?version;???
?35
??
?36
????//CascadeType.PERSIST???--?觸發級聯創建(create)???
?37
????//CascadeType.MERGE?????--?觸發級聯合并(update)???
?38
????//FetchType.LAZY????????--?延遲加載???
?39
????@ManyToOne(cascade?=?
{CascadeType.PERSIST,CascadeType.MERGE},fetch?=?FetchType.LAZY)???
?40
????private?PromotionGroup?promotionGroup;???
?41
??
?42
????//單向ManyToMany???
?43
????//@JoinTable(關聯的表名)???
?44
????//joinColumns?--?promotion關聯的列的外鍵???
?45
????//inverseJoinColumns?--?largess?關聯列的外鍵???
?46
????@ManyToMany(cascade?=?
{CascadeType.PERSIST,CascadeType.MERGE})???
?47
????@JoinTable(name="promotion_largess",joinColumns=
{@JoinColumn(name="promotion_id")},inverseJoinColumns=
{@JoinColumn(name="largess_id")})???
?48
????private?Set<Largess>?largess;????
?49
???????
?50
????@OneToMany(mappedBy="promotion",cascade?=?CascadeType.ALL)???
?51
????@OrderBy("quantity?asc")//item中的列表會根據quantity排序???
?52
????private?List<PromotionItem>?promotionItem;???
?53
??
?54
????//get?set?省略
.???
?55
????@Transient??
?56
????private?Long?hashcodeValue?=?null;???
?57
????public?synchronized?int?hashCode()?
{???
?58
????????if(hashcodeValue?=?null)?
{???
?59
????????????if(id?==?null)???
?60
????????????????hashcodeValue?=?new?Long(super.hashCode());???
?61
????????????else??
?62
????????????????hashcodeValue?=?id;???
?63
????????}???
?64
????????return?hashcodeValue.intValue();???
?65
????}???
?66
??
?67
????public?boolean?equals(Object?obj)?
{???
?68
????????Promotion?other?=?(Promotion)?obj;???
?69
????????if(this?==?other)???
?70
????????????return?true;???
?71
????????if(this.id?==?null?||?other.id?==?null)???
?72
????????????return?false;???
?73
????????return?this.id.equals(other.id);???
?74
????}???
?75
??
?76
}???
?77
@Entity??
?78
@Table(name="promotion_group")???
?79
public?class?PromotionGroup?implements?Serializable?
{???
?80
????@Id????
?81
????@GeneratedValue(strategy?=?GenerationType.AUTO)???
?82
????private?Long?id;???
?83
???????
?84
????//mappedBy的值"promotionGroup"指向owner(Promotion)端的關聯屬性,并且是雙向關系???
?85
????@OneToMany(mappedBy="promotionGroup",cascade=CascadeType.ALL)???
?86
????private?List<Promotion>?promotion;???
?87
??
?88
????//get?set?省略
.???
?89
}???
?90
@Entity??
?91
@Table(name="largess")???
?92
public?class?Largess?implements?Serializable?
{???
?93
????@Id????
?94
????@GeneratedValue(strategy?=?GenerationType.AUTO)???
?95
????private?Long?id;???
?96
??
?97
????//1.sql語句中的字段和表名都應該和數據庫相應,而不是類中的字段,???
?98
????//若帶有參數如la.id=?id,這個=id才是類中屬性???
?99
????//2.操作字段一定要用別名???
100
????@Formula(select?max(la.id)?from?largess?as?la)???
101
????private?int?maxId;???
102
??
103
????@Formula(select?COUNT(la.id)?from?largess?la)???
104
????private?int?count;???
105
??
106
????@Transient??
107
????private?String?img???
108
??
109
????//get?set?省略
.???
110
}??
111

??2

??3



??4

??5

??6

??7

??8

??9

?10

?11

?12

?13

?14

?15

?16

?17

?18

?19

?20

?21

?22

?23

?24

?25

?26

?27



?28

?29

?30

?31

?32

?33

?34

?35

?36

?37

?38

?39



?40

?41

?42

?43

?44

?45

?46



?47




?48

?49

?50

?51

?52

?53

?54


?55

?56

?57



?58



?59

?60

?61

?62

?63

?64

?65

?66

?67



?68

?69

?70

?71

?72

?73

?74

?75

?76

?77

?78

?79



?80

?81

?82

?83

?84

?85

?86

?87

?88


?89

?90

?91

?92



?93

?94

?95

?96

?97

?98

?99

100

101

102

103

104

105

106

107

108

109


110

111

posted on 2010-08-18 17:32 duansky 閱讀(279) 評論(0) 編輯 收藏 所屬分類: Java