User.java
1
package com.test.bean;
2
3
import java.util.Date;
4
import java.util.HashSet;
5
import java.util.Set;
6
7
import javax.persistence.Basic;
8
import javax.persistence.CascadeType;
9
import javax.persistence.Column;
10
import javax.persistence.Entity;
11
import javax.persistence.FetchType;
12
import javax.persistence.GeneratedValue;
13
import javax.persistence.Id;
14
import javax.persistence.JoinColumn;
15
import javax.persistence.JoinTable;
16
import javax.persistence.Lob;
17
import javax.persistence.ManyToMany;
18
import javax.persistence.ManyToOne;
19
import javax.persistence.OneToOne;
20
import javax.persistence.Table;
21
import javax.persistence.Temporal;
22
import javax.persistence.TemporalType;
23
import javax.persistence.Transient;
24
25
import org.hibernate.annotations.GenericGenerator;
26
/**
27
* 标注@Entity注释的类,表示该类是一个可持久化的实体
28
* 其中Entity中的“name”属性表示实体的名称,若不做设置,默认为标注实体的类的名称,一般默认;
29
* 表@Table 属性不区分大小写
30
* name属性表示实体所对应表的名称,默认表名为实体的名称。
31
* catalog和schema属性表示实体指定的目录名或是数据库名,这根据不同的数据库类型有所不同。
32
* uniqueConstraints属性表示该实体所关联的唯一约束条件,一个实体可以有多个唯一约束条件,默认没有约束条件。
33
* 若使用uniqueConstraints标记时,需要配合标记UniqueConstraint标记来使用。
34
* 例如:uniqueConstraints = {@UniqueConstraint(columnNames = { "name", "email" }),@UniqueConstraint(columnNames = { "col_1", "col_2" })}
35
*/
36 @Entity
37 @Table(name="UserInfos")
38
public
class User {
39
//
普通属性
40
/**
41
* 一个实体类至少要有一个主键(Primary Key),设置主键@Id
42
* 生成策略@GeneratedValue用于主键的生成策略
43
* @Target({METHOD, FIELD}) @Retention(RUNTIME)
44
* public @interface GeneratedValue {
45
* GenerationType strategy() default AUTO;
46
* strategy属性表示生成主键的策略。有四种类型,分别定义在枚举类型GenerationType中
47
*
48
* String generator() default "";
49
* generator为不同策略类型所对应的生成的规则名,它的值根据不同的策略有不同的设置。
50
* }
51
*/
52 @Id
53 @GeneratedValue(generator="system-uuid")
54 @GenericGenerator(name="system-uuid", strategy="uuid")
55 @Column(length=32)
56
private String id;
57
58
/**
59
* @Target({METHOD, FIELD}) @Retention(RUNTIME)
60
* public @interface Column {
61
* String name() default "";
62
* 字段名称
63
*
64
* boolean unique() default false;
65
* unique属性表示该字段是否为唯一标识,默认为false。如果表中有一个字段需要唯一标识,则既可以使用该标记,
66
* 也可以使用@Table标记中的@UniqueConstraint。
67
*
68
* boolean nullable() default true;
69
* nullable属性表示该字段是否可以为null值,默认为true。
70
*
71
* boolean insertable() default true;
72
* insertable属性表示在使用“INSERT”脚本插入数据时,是否需要插入该字段的值。
73
*
74
* boolean updatable() default true;
75
* updatable属性表示在使用“UPDATE”脚本插入数据时,是否需要更新该字段的值。
76
* insertable和updatable属性一般多用于只读的属性,例如主键和外键等。这些字段的值通常是自动生成的。
77
*
78
* String columnDefinition() default "";
79
* columnDefinition属性表示创建表时,该字段创建的SQL语句,一般用于通过Entity生成表定义时使用。
80
*
81
* String table() default "";
82
* table属性表示当映射多个表时,指定表的表中的字段。默认值为主表的表名。
83
*
84
* int length() default 255;
85
* length属性表示字段的长度,当字段的类型为varchar时,该属性才有效,默认为255个字符。
86
*
87
* int precision() default 0;
88
* int scale() default 0;
89
* precision属性和scale属性表示精度,当字段类型为double时,precision表示数值的总长度,scale表示小数点所占的位数。
90
* }
91
*
92
*
93
*
94
* @Target({METHOD, FIELD}) @Retention(RUNTIME)
95
* public @interface Basic {
96
* FetchType fetch() default EAGER;
97
* 有两种加载方式,LAZY和EAGER。EAGER 表示即时加载、LAZY表示惰性加载。默认为即时加载
98
*
99
* boolean optional() default true;
100
* 属性optional表示属性是否可为null,不能用于Java基本数据类型byte,int,short,long,boolean,char,float,double的使用。
101
* }
102
*/
103 @Basic(fetch=FetchType.EAGER)
104 @Column(length = 50,name="USER_CODING", nullable=
false)
105
private String userCoding;
//
用户编码
106
107 @Column(length = 50,name="USER_NAME", nullable=
false)
108
private String userName;
109
110
/**
111
* 标注@Temporal注释来说明转化成java.util包中的类型。
112
* 默认为TemporalType.TIMESTAMP类型
113
* java.sql.Date日期型,精确到年月日,例如“2008-08-08”
114
* java.sql.Time时间型,精确到时分秒,例如“20:00:00”
115
* java.sql.Timestamp时间戳,精确到纳秒,例如“2008-08-08 20:00:00.000000001”
116
*/
117 @Column(name="USER_BIRTHDAY")
118 @Temporal(TemporalType.DATE)
119
private Date userBirthday;
//
用户生日
120
121 @Column(length = 50,name="IDCARD")
122
private String IDCard;
//
身份证号码
123
124
/**
125
* 当容器加载实体时,将认为标注了@Transient注释的属性是非持久化的,将不会对应到表中的字段。
126
*/
127 @Transient
128
private String userHomeplace;
//
用户出生地(籍贯)
129
130 @Column(length = 25,name="USER_STATURE")
131
private String userStature;
//
用户身高
132
133 @Column(length = 25,name="USER_AVOIRDUPOIS")
134
private String userAvoirdupois;
//
用户体重
135
136 @Column(length = 25,name="USER_HEALTH_STATUS")
137
private String userHealthStatus;
//
用户健康情况
138
139 @Column(length = 5, name="USER_MARRIAGE_STATUS")
140
private Integer userMarriageStatus;
//
用户婚姻情况 未婚:0 已婚:1
141
142 @Column(length = 25, name="USER_HOMEPHONE")
143
private String userHomephone;
//
用户固定电话
144
145 @Column(length = 25, name="USER_MOBILETELEPHONE")
146
private String userMobileTelephone;
//
用户移动电话
147
148 @Column(length = 50,name="USER_EMAIL")
149
private String userEmail;
//
用户电子邮箱
150
151 @Column(length = 50, name="USERD_WELLINGPLACE")
152
private String userDwellingPlace;
//
用户住址
153
154 @Column(length = 10, name="USER_POST_CODING")
155
private String userPostCoding;
//
用户邮政编码
156
157 @Column(length = 50, name="DEGREE")
158
private String degree;
//
临时保存学历用
159
160 @Column(length = 50, name="JOIN_WORK_DATE")
161
private String joinworkdate;
//
参加工作日期
162
163
/**
164
* @Lob适用于标注字段类型为Clob和Blob类型。
165
* Clob(Character Large Ojects)类型是长字符串类型,映射为实体中的类型可为char[]、Character[]、或者String类型。
166
* Blob(Binary Large Objects)类型是字节类型,映射为实体中的类型可为byte[]、Byte[]、或者实现了Serializable接口的类。
167
* 因为这两种类型的数据一般占用的内存空间比较大,所以通常使用惰性加载的方式,所以一般都要与@Basic标记同时使用,设置加载方式为FetchType.LAZY。
168
*/
169 @Lob
170 @Column(name="USER_PHOTO")
171 @Basic(fetch=FetchType.LAZY)
172
private
byte[] userPhoto;
//
用户照片
173
174
//
关联属性《一对一外键关联》一个user创建一个certificate
175
/**
176
* @Target({METHOD, FIELD}) @Retention(RUNTIME)
177
* public @interface OneToOne {
178
* Class targetEntity() default void.class;
179
* targetEntity属性表示默认关联的实体类型,默认为当前标注的实体类。例如使用默认设置与以下所示的设置的效果相同。一般情况使用默认设置就可以了。
180
*
181
* CascadeType[] cascade() default {};
182
* cascade属性表示与此实体一对一关联的实体的联级样式类型。联级样式是当对实体进行操作时策略,默认情况下,不关联任何操作。
183
*
184
* FetchType fetch() default EAGER;
185
* fetch属性是该实体的加载方式,默认为及时加载EAGER,也可以使用惰性加载LAZY。
186
*
187
* boolean optional() default true;
188
* optional属性表示关联的该实体是否能够存在null值。默认为true,表示可以存在null值。
189
* 如果设置为false,则该实体不能为null,并且要同时配合使用@JoinColumn标记,将保存实体关系的字段设置为唯一的unique=true、
190
* 不为nullnullable=false,并且不能更新的updatable=false。
191
*
192
* String mappedBy() default "";
193
* mappedBy属性用于双向关联实体时,标注在不保存关系的实体中
194
* }
195
*
196
*@Target({METHOD, FIELD}) @Retention(RUNTIME)
197
*public @interface JoinColumn {
198
* String name() default "";
199
* String referencedColumnName() default "";
200
* boolean unique() default false;
201
* boolean nullable() default true;
202
* boolean insertable() default true;
203
* boolean updatable() default true;
204
* String columnDefinition() default "";
205
* String table() default "";
206
*}
207
* 1.@JoinColumn与@Column标记一样,是用于注释表中的字段的。它的属性与@Column属性有很多相同之处
208
* 2.@JoinColumn注释的是保存表与表之间关系的字段,它要标注在实体属性上
209
* 3.与@Column标记一样,name属性是用来标识表中所对应的字段的名称。
210
* 4.OneToOne中name=关联表的名称+“_”+ 关联表主键的字段名
211
*
212
*/
213 @OneToOne(cascade=CascadeType.ALL, fetch=FetchType.LAZY)
214 @JoinColumn(name="CERTIFICATE_MAKER",unique=
true, nullable=
false,updatable=
false)
215
private Certificate certificate;
216
217
//
关联属性《多对一 多个user属于一个department和Nation》
218
/**
219
* @Target({METHOD, FIELD}) @Retention(RUNTIME)
220
* public @interface ManyToOne {
221
* Class targetEntity() default void.class;
222
* CascadeType[] cascade() default {};
223
* FetchType fetch() default EAGER;
224
* boolean optional() default true;
225
* }
226
*/
227 @ManyToOne(cascade=CascadeType.ALL)
228 @JoinColumn(name="department_id")
229
private Department department;
//
用户部门信息
230
231 @ManyToOne(cascade=CascadeType.ALL)
232 @JoinColumn(name="userNation_id")
233
private Nation userNation;
//
用户的民族编码
234
235
236
//
关联属性《多对多》
237
/**
238
* @Target({METHOD, FIELD})
239
* public @interface JoinTable {
240
* String name() default "";
241
* name属性表示实体所对应表的名称,name属性为连接两个表的表名称。若不指定,则使用默认的表名称如下所示。“表名1”+“_”+“表名2”。
242
*
243
* String catalog() default "";
244
* String schema() default "";
245
* catalog和schema属性表示实体指定的目录名或是数据库名,这根据不同的数据库类型有所不同。
246
*
247
* JoinColumn[] joinColumns() default {};
248
* joinColumns属性表示,在保存关系中的表中,所保存关联关系的外键的字段。并配合@JoinColumn标记使用。
249
*
250
* JoinColumn[] inverseJoinColumns() default {};
251
* inverseJoinColumns属性与joinColumns属性类似,它保存的是保存关系的另一个外键字段。
252
*
253
* UniqueConstraint[] uniqueConstraints default {};
254
* uniqueConstraints属性表示该实体所关联的唯一约束条件,一个实体可以有多个唯一约束条件,默认没有约束条件。
255
* 若使用uniqueConstraints标记时,需要配合标记UniqueConstraint标记来使用。
256
* 例如:uniqueConstraints = {@UniqueConstraint(columnNames = { "name", "email" }),@UniqueConstraint(columnNames = { "col_1", "col_2" })}
257
* }
258
*/
259 @ManyToMany(cascade=CascadeType.ALL)
260 @JoinTable(
261 name="re_user_item",
262 joinColumns={
263 @JoinColumn(name="user_id",referencedColumnName="id")
264 },
265 inverseJoinColumns={
266 @JoinColumn(name="item_id",referencedColumnName="id")
267 }
268 )
269
private Set<Item> items =
new HashSet<Item>();
//
用户可以参加的项目
270
271
public String getId() {
272
return id;
273 }
274
275
public
void setId(String id) {
276
this.id = id;
277 }
278
279
public String getUserCoding() {
280
return userCoding;
281 }
282
283
public
void setUserCoding(String userCoding) {
284
this.userCoding = userCoding;
285 }
286
287
public String getUserName() {
288
return userName;
289 }
290
291
public
void setUserName(String userName) {
292
this.userName = userName;
293 }
294
295
public Date getUserBirthday() {
296
return userBirthday;
297 }
298
299
public
void setUserBirthday(Date userBirthday) {
300
this.userBirthday = userBirthday;
301 }
302
303
public String getIDCard() {
304
return IDCard;
305 }
306
307
public
void setIDCard(String card) {
308 IDCard = card;
309 }
310
311
public String getUserHomeplace() {
312
return userHomeplace;
313 }
314
315
public
void setUserHomeplace(String userHomeplace) {
316
this.userHomeplace = userHomeplace;
317 }
318
319
public String getUserStature() {
320
return userStature;
321 }
322
323
public
void setUserStature(String userStature) {
324
this.userStature = userStature;
325 }
326
327
public String getUserAvoirdupois() {
328
return userAvoirdupois;
329 }
330
331
public
void setUserAvoirdupois(String userAvoirdupois) {
332
this.userAvoirdupois = userAvoirdupois;
333 }
334
335
public String getUserHealthStatus() {
336
return userHealthStatus;
337 }
338
339
public
void setUserHealthStatus(String userHealthStatus) {
340
this.userHealthStatus = userHealthStatus;
341 }
342
343
public Integer getUserMarriageStatus() {
344
return userMarriageStatus;
345 }
346
347
public
void setUserMarriageStatus(Integer userMarriageStatus) {
348
this.userMarriageStatus = userMarriageStatus;
349 }
350
351
public String getUserHomephone() {
352
return userHomephone;
353 }
354
355
public
void setUserHomephone(String userHomephone) {
356
this.userHomephone = userHomephone;
357 }
358
359
public String getUserMobileTelephone() {
360
return userMobileTelephone;
361 }
362
363
public
void setUserMobileTelephone(String userMobileTelephone) {
364
this.userMobileTelephone = userMobileTelephone;
365 }
366
367
public String getUserEmail() {
368
return userEmail;
369 }
370
371
public
void setUserEmail(String userEmail) {
372
this.userEmail = userEmail;
373 }
374
375
public String getUserDwellingPlace() {
376
return userDwellingPlace;
377 }
378
379
public
void setUserDwellingPlace(String userDwellingPlace) {
380
this.userDwellingPlace = userDwellingPlace;
381 }
382
383
public String getUserPostCoding() {
384
return userPostCoding;
385 }
386
387
public
void setUserPostCoding(String userPostCoding) {
388
this.userPostCoding = userPostCoding;
389 }
390
391
public String getDegree() {
392
return degree;
393 }
394
395
public
void setDegree(String degree) {
396
this.degree = degree;
397 }
398
399
public String getJoinworkdate() {
400
return joinworkdate;
401 }
402
403
public
void setJoinworkdate(String joinworkdate) {
404
this.joinworkdate = joinworkdate;
405 }
406
407
public
byte[] getUserPhoto() {
408
return userPhoto;
409 }
410
411
public
void setUserPhoto(
byte[] userPhoto) {
412
this.userPhoto = userPhoto;
413 }
414
415
public Certificate getCertificate() {
416
return certificate;
417 }
418
419
public
void setCertificate(Certificate certificate) {
420
this.certificate = certificate;
421 }
422
423
public Department getDepartment() {
424
return department;
425 }
426
427
public
void setDepartment(Department department) {
428
this.department = department;
429 }
430
431
public Nation getUserNation() {
432
return userNation;
433 }
434
435
public
void setUserNation(Nation userNation) {
436
this.userNation = userNation;
437 }
438
439
public Set<Item> getItems() {
440
return items;
441 }
442
443
public
void setItems(Set<Item> items) {
444
this.items = items;
445 }
446
447 }
448
Certificate.java
1
package com.test.bean;
2
3
import javax.persistence.Column;
4
import javax.persistence.Entity;
5
import javax.persistence.GeneratedValue;
6
import javax.persistence.Id;
7
import javax.persistence.OneToOne;
8
import javax.persistence.Table;
9
10
import org.hibernate.annotations.GenericGenerator;
11
12
/**
13
*<br> 文 件 名: Certificate.java
14
*<br> 创 建 人: zzn
15
*<br> 创建日期: Jul 7, 2010 3:41:45 PM
16
*/
17 @Entity
18 @Table(name="certificate")
19
public
class Certificate {
20
21 @Id
22 @GeneratedValue(generator = "system-uuid")
23 @GenericGenerator(name = "system-uuid", strategy = "uuid")
24 @Column(length=32)
25
private String id;
26
27 @Column(name="CERTIFICATE_NAME", length=100, nullable=
false)
28
private String certificateName;
//
证书名称
29
30 @Column(name="CERTIFICATE_CODE", length=100, nullable=
false)
31
private String certificateCode;
//
证书编号
32
33 @Column(name="VALID_DATE", length=50)
34
private String validDate;
//
有效期;
35
36 @Column(name="MAKE_DATE", length=100)
37
private String makeDate;
//
创建日期
38
39 @OneToOne(mappedBy = "certificate")
40
private User user;
41
42
public User getUser() {
43
return user;
44 }
45
public
void setUser(User user) {
46
this.user = user;
47 }
48
public String getId() {
49
return id;
50 }
51
public
void setId(String id) {
52
this.id = id;
53 }
54
public String getCertificateName() {
55
return certificateName;
56 }
57
public
void setCertificateName(String certificateName) {
58
this.certificateName = certificateName;
59 }
60
public String getCertificateCode() {
61
return certificateCode;
62 }
63
public
void setCertificateCode(String certificateCode) {
64
this.certificateCode = certificateCode;
65 }
66
public String getValidDate() {
67
return validDate;
68 }
69
public
void setValidDate(String validDate) {
70
this.validDate = validDate;
71 }
72
public String getMakeDate() {
73
return makeDate;
74 }
75
public
void setMakeDate(String makeDate) {
76
this.makeDate = makeDate;
77 }
78
79 }
80
Nation.java
1
package com.test.bean;
2
3
import java.util.HashSet;
4
import java.util.Set;
5
6
import javax.persistence.Column;
7
import javax.persistence.Entity;
8
import javax.persistence.GeneratedValue;
9
import javax.persistence.Id;
10
import javax.persistence.OneToMany;
11
import javax.persistence.Table;
12
13
import org.hibernate.annotations.GenericGenerator;
14
15
/**
16
*<br> 文 件 名: Nation.java
17
*<br> 创 建 人: zzn
18
*<br> 创建日期: Jul 7, 2010 3:41:34 PM
19
*/
20 @Entity
21 @Table(name="nation")
22
public
class Nation {
23
24 @Id
25 @GeneratedValue(generator = "system-uuid")
26 @GenericGenerator(name = "system-uuid", strategy = "uuid")
27 @Column(length=32)
28
private String id;
29
30 @Column(length=50,name="NATION_NAME")
31
private String nationName;
//
民族名称
32
33
/**
34
* 如果使用了List集合,可以同时配合注释@OrderBy使查询出来的集合类按照一定的顺序排列
35
* 例如:@OrderBy("id ASC,postcode DESC")postcode是属性
36
* @OneToMany(mappedBy="customer")
37
* @OrderBy("postcode ASC")
38
* public List<AddressEO> getAddresses() {
39
* return addresses;
40
* }
41
*
42
* 如果使用了Map集合,可以同时配合注释@MapKey指定Map中存放的key值。
43
* 如:@MapKey(name="id")将AddressEO中的属性id作为key值保存在Map中。
44
* @OneToMany(mappedBy="customer")
45
* @MapKey(name="id")
46
* public Map<Integer, AddressEO> getAddresses() {
47
* return addresses;
48
* }
49
*/
50 @OneToMany(mappedBy="userNation")
51
private Set<User> user =
new HashSet<User>();
52
53 @Override
54
public
int hashCode() {
55
final
int PRIME = 31;
56
int result = 1;
57 result = PRIME * result + ((id ==
null) ? 0 : id.hashCode());
58 result = PRIME * result + ((nationName ==
null) ? 0 : nationName.hashCode());
59
return result;
60 }
61
62 @Override
63
public
boolean equals(Object obj) {
64
if (
this == obj)
65
return
true;
66
if (obj ==
null)
67
return
false;
68
if (getClass() != obj.getClass())
69
return
false;
70
final Nation other = (Nation) obj;
71
if (id ==
null) {
72
if (other.id !=
null)
73
return
false;
74 }
else
if (!id.equals(other.id))
75
return
false;
76
if (nationName ==
null) {
77
if (other.nationName !=
null)
78
return
false;
79 }
else
if (!nationName.equals(other.nationName))
80
return
false;
81
return
true;
82 }
83
84
public String getId() {
85
return id;
86 }
87
88
public
void setId(String id) {
89
this.id = id;
90 }
91
92
public String getNationName() {
93
return nationName;
94 }
95
96
public
void setNationName(String nationName) {
97
this.nationName = nationName;
98 }
99
100
public Set<User> getUser() {
101
return user;
102 }
103
104
public
void setUser(Set<User> user) {
105
this.user = user;
106 }
107
108
109 }
110
Department.java
1
package com.test.bean;
2
3
import java.util.Date;
4
import java.util.HashSet;
5
import java.util.Set;
6
7
import javax.persistence.Column;
8
import javax.persistence.Entity;
9
import javax.persistence.GeneratedValue;
10
import javax.persistence.Id;
11
import javax.persistence.OneToMany;
12
import javax.persistence.Table;
13
import javax.persistence.Temporal;
14
import javax.persistence.TemporalType;
15
16
import org.hibernate.annotations.GenericGenerator;
17
18
19
/**
20
*<br> 文 件 名: Department.java
21
*<br> 创 建 人: zzn
22
*<br> 创建日期: Jul 7, 2010 1:08:09 PM
23
*/
24 @Entity
25 @Table(name="DEPARTMENTS")
26
public
class Department {
27
28 @Id
29 @GeneratedValue(generator = "system-uuid")
30 @GenericGenerator(name = "system-uuid", strategy = "uuid")
31 @Column(length=32)
32
private String id;
33
34 @Column(name="CREATE_TIME")
35 @Temporal(TemporalType.DATE)
36
private Date createTime;
//
创建时间
37
38 @Column(name="DEPARTMENT_NAME", length=100)
39
private String departmentName;
//
部门名称
40
41 @Column(name="DEPARTMENT_CODING", length=100)
42
private String departmentCoding;
//
部门编号
43
44 @Column(name="DEPARTMENT_MANAGER", length=100)
45
private String departmentManager;
//
部门经理
46
47 @Column(name="DEPARTMEN_TTELEPHONE", length=50)
48
private String departmentTelephone;
//
联系电话
49
50 @Column(name="DEPARTMENT_FOUNCTION_DESC", length=1000)
51
private String departmentFounctionDesc;
//
部门职能描述
52
53 @Column(name="LINK_MAN", length=25)
54
private String linkMan;
//
培训联系人
55
56
/**
57
* @Target({METHOD, FIELD}) @Retention(RUNTIME)
58
* public @interface OneToMany {
59
* Class targetEntity() default void.class;
60
* targetEntity属性表示默认关联的实体类型。因为一对多的实体集合时保存在集合类中,所以必须指明集合类中保存的具体类型。
61
* 1/指定集合泛型的具体类型;2/指定targetEntity属性类型
62
* 1.本例;2.@OneToMany(targetEntity=User.class,cascade = CascadeType.ALL)
63
*
64
* CascadeType[] cascade() default {};
65
* cascade属性表示与此实体一对多关联的实体的联级样式类型。联级样式是当对实体进行操作时策略,默认情况下,不关联任何操作。
66
* 本例:当删除Department时会同时删除所有的User
67
*
68
* FetchType fetch() default LAZY;
69
* fetch属性默认为惰性加载LAZY的,本例:加载Department延迟加载User
70
*
71
* String mappedBy() default "";
72
* mappedBy属性只有在实体间双向关联时使用。
73
* mappedBy属性的值为User实体中所引用的department实体的属性名
74
* }
75
*/
76 @OneToMany(mappedBy="department")
77
private Set<User> userInfos =
new HashSet<User>();
//
部门成员信息
78
79
//
private Department fatherDepartment;
//
上级直属部门
80
81
//
private Set<Department> departments = new HashSet<Department>();
//
所包含部门
82
83
//
private Set<String> parentsId = new HashSet<String>();
//
父部门id
84
85
public String getId() {
86
return id;
87 }
88
public
void setId(String id) {
89
this.id = id;
90 }
91
public Date getCreateTime() {
92
return createTime;
93 }
94
public
void setCreateTime(Date createTime) {
95
this.createTime = createTime;
96 }
97
public String getDepartmentName() {
98
return departmentName;
99 }
100
public
void setDepartmentName(String departmentName) {
101
this.departmentName = departmentName;
102 }
103
public String getDepartmentCoding() {
104
return departmentCoding;
105 }
106
public
void setDepartmentCoding(String departmentCoding) {
107
this.departmentCoding = departmentCoding;
108 }
109
public String getDepartmentManager() {
110
return departmentManager;
111 }
112
public
void setDepartmentManager(String departmentManager) {
113
this.departmentManager = departmentManager;
114 }
115
public String getDepartmentTelephone() {
116
return departmentTelephone;
117 }
118
public
void setDepartmentTelephone(String departmentTelephone) {
119
this.departmentTelephone = departmentTelephone;
120 }
121
public String getDepartmentFounctionDesc() {
122
return departmentFounctionDesc;
123 }
124
public
void setDepartmentFounctionDesc(String departmentFounctionDesc) {
125
this.departmentFounctionDesc = departmentFounctionDesc;
126 }
127
public String getLinkMan() {
128
return linkMan;
129 }
130
public
void setLinkMan(String linkMan) {
131
this.linkMan = linkMan;
132 }
133
public
void setUserInfos(Set<User> userInfos) {
134
this.userInfos = userInfos;
135 }
136
public Set<User> getUserInfos() {
137
return userInfos;
138 }
139
//
public Department getFatherDepartment() {
140
//
return fatherDepartment;
141
//
}
142
//
public void setFatherDepartment(Department fatherDepartment) {
143
//
this.fatherDepartment = fatherDepartment;
144
//
}
145
//
public Set<Department> getDepartments() {
146
//
return departments;
147
//
}
148
//
public Set<String> getParentsId() {
149
//
return parentsId;
150
//
}
151
//
public void setDepartments(Set<Department> departments) {
152
//
this.departments = departments;
153
//
}
154
//
public void setParentsId(Set<String> parentsId) {
155
//
this.parentsId = parentsId;
156
//
}
157
158 }
159
Item.java
1
package com.test.bean;
2
3
import java.util.Date;
4
import java.util.HashSet;
5
import java.util.Set;
6
7
import javax.persistence.Column;
8
import javax.persistence.Entity;
9
import javax.persistence.EnumType;
10
import javax.persistence.Enumerated;
11
import javax.persistence.GeneratedValue;
12
import javax.persistence.Id;
13
import javax.persistence.ManyToMany;
14
import javax.persistence.Table;
15
import javax.persistence.Temporal;
16
import javax.persistence.TemporalType;
17
18
import org.hibernate.annotations.GenericGenerator;
19
20
/**
21
*<br> 文 件 名: Item.java
22
*<br> 创 建 人: zzn
23
*<br> 创建日期: Jul 7, 2010 3:42:30 PM
24
*/
25 @Entity
26 @Table(name="item")
27
public
class Item {
28
29 @Id
30 @GeneratedValue(generator = "system-uuid")
31 @GenericGenerator(name = "system-uuid", strategy = "uuid")
32 @Column(length=32)
33
private String id;
34
35 @Column(name="ITEM_NUMBER", length=100)
36
private String itemNumber;
/*
项目_编号
*/
37
38 @Column(name="ITEM_NAME", length=100)
39
private String name;
/*
项目名称
*/
40
41 @Column(name="TYPE", length=10)
42
private String type;
/*
所含类型
*/
//
1.外送 2.内部 3.在岗辅导 4.在线学习 5.学历与进修
43
44 @Temporal(TemporalType.DATE)
45 @Column(name="START_TIME")
46
private Date startTime;
/*
开始时间
*/
47
48 @Temporal(TemporalType.DATE)
49 @Column(name="END_TIME")
50
private Date endTime;
/*
结束时间
*/
51
52 @Temporal(TemporalType.DATE)
53 @Column(name="EDIT_TIME")
54
private Date editTime;
/*
编辑时间
*/
55
56 @Column(name="ITEM_TIME", length=10)
57
private Integer item_time;
/*
项目学时
*/
58
59 @Column(name="CREDIT_HOUR", length=10)
60
private Integer creditHour;
/*
获得学分
*/
61
62 @Column(name="TRAIN_MANAGER", length=10)
63
private String trainManager;
/*
培训经理
*/
64
65 @Column(name="ITEM_TARGER", length=1000)
66
private String itemTarget;
/*
项目目标
*/
67
68 @Column(name="TRAINING_ADDRESS", length=200)
69
private String trainingAddress;
//
培训地址
70
71 @Column(name="REMARK", length=1000)
72
private String remark;
//
备注
73
74 @Column(name="ITEM_STATUS", length=20)
75 @Enumerated(EnumType.STRING)
76
private String status;
77
78
//
项目状态
79
public
enum itemStatus{
80 未开始,运行中,关闭
81 }
82
83 @Column(name="ITEM_PROPERTY", length=20)
84 @Enumerated(EnumType.STRING)
85
private String property;
86
87
public
enum itemProperty{
88 新员工类,岗前培训类,定岗或转正培训类,绩效提升类,晋升类
89 }
90
91 @ManyToMany(mappedBy="items")
92
private Set<User> userId =
new HashSet<User>();
//
针对选修项目,指定可以参与该项目的用户
93
94
//
private Department depaId;
//
所属部门;项目(n)-->部门(1)(单向)
95
96
//
private Set<Certificate> certificates;
//
项目颁发的证书
97
98
public String getId() {
99
return id;
100 }
101
public
void setId(String id) {
102
this.id = id;
103 }
104
public String getItemNumber() {
105
return itemNumber;
106 }
107
public
void setItemNumber(String itemNumber) {
108
this.itemNumber = itemNumber;
109 }
110
public String getName() {
111
return name;
112 }
113
public
void setName(String name) {
114
this.name = name;
115 }
116
public String getType() {
117
return type;
118 }
119
public
void setType(String type) {
120
this.type = type;
121 }
122
public Date getStartTime() {
123
return startTime;
124 }
125
public
void setStartTime(Date startTime) {
126
this.startTime = startTime;
127 }
128
public Date getEndTime() {
129
return endTime;
130 }
131
public
void setEndTime(Date endTime) {
132
this.endTime = endTime;
133 }
134
public Date getEditTime() {
135
return editTime;
136 }
137
public
void setEditTime(Date editTime) {
138
this.editTime = editTime;
139 }
140
public Integer getItem_time() {
141
return item_time;
142 }
143
public
void setItem_time(Integer item_time) {
144
this.item_time = item_time;
145 }
146
public Integer getCreditHour() {
147
return creditHour;
148 }
149
public
void setCreditHour(Integer creditHour) {
150
this.creditHour = creditHour;
151 }
152
public String getTrainManager() {
153
return trainManager;
154 }
155
public
void setTrainManager(String trainManager) {
156
this.trainManager = trainManager;
157 }
158
public Set<User> getUserId() {
159
return userId;
160 }
161
public
void setUserId(Set<User> userId) {
162
this.userId = userId;
163 }
164
public String getItemTarget() {
165
return itemTarget;
166 }
167
public
void setItemTarget(String itemTarget) {
168
this.itemTarget = itemTarget;
169 }
170
public String getTrainingAddress() {
171
return trainingAddress;
172 }
173
public
void setTrainingAddress(String trainingAddress) {
174
this.trainingAddress = trainingAddress;
175 }
176
public String getRemark() {
177
return remark;
178 }
179
public
void setRemark(String remark) {
180
this.remark = remark;
181 }
182
//
public Department getDepaId() {
183
//
return depaId;
184
//
}
185
//
public void setDepaId(Department depaId) {
186
//
this.depaId = depaId;
187
//
}
188
public String getProperty() {
189
return property;
190 }
191
public
void setProperty(String property) {
192
this.property = property;
193 }
194
public String getStatus() {
195
return status;
196 }
197
public
void setStatus(String status) {
198
this.status = status;
199 }
200
201
//
public Set<Certificate> getCertificates() {
202
//
return certificates;
203
//
}
204
//
public void setCertificates(Set<Certificate> certificates) {
205
//
this.certificates = certificates;
206
//
}
207 }
208
Resource.java
1
package com.test.bean;
2
3
import java.io.Serializable;
4
5
import javax.persistence.Column;
6
import javax.persistence.GeneratedValue;
7
import javax.persistence.Id;
8
9
import org.hibernate.annotations.GenericGenerator;
10
11
/**
12
*<br> 文 件 名: Resources.java
13
*<br> 创 建 人: zzn
14
*<br> 创建日期: Jul 14, 2010 10:15:39 AM
15
*/
16
17
/**
18
*####################################################################################################################################
19
* 1.继承关系的实体保存在一个表(Single Table per Class Hierarchy Strategy)
20
* 建议:这种方法虽然只有一个表,但是会出现很多的null值,所以不建议使用
21
* 继承关系的实体中,所有的实体类都映射到一个表中,表中使用一个特殊的标识字段(discriminator column),来标识一条记录属于那个子类。
22
* 如:
23
* @Entity
24
* 使用@Entity注释,标识该类以及所有的子类都映射到指定的表中,如果不标注,也可使用默认值。
25
*
26
* @Table(name = "Resource")
27
*
28
* @Inheritance(strategy=InheritanceType.SINGLE_TABLE)
29
* 使用@Inheritance注释,标识该类的子类继承映射的方式,InheritanceType有三种类型,三种类型定义为常量,默认为SINGLE_TABLE。
30
* public enum InheritanceType{ SINGLE_TABLE, JOINED, TABLE_PER_CLASS };
31
* SINGLE_TABLE表示继承关系的实体保存在一个表;JOINED表示每个实体子类保存在一个表;TABLE_PER_CLASS表示每个实体类保存在一个表
32
*
33
* @DiscriminatorColumn(name="resource_type",discriminatorType=DiscriminatorType.STRING)
34
* 使用@DiscriminatorColumn注释,标识改继承层次上所区别每个实体的类型字段。
35
* @Target({TYPE}) @Retention(RUNTIME)
36
* public @interface DiscriminatorColumn {
37
* String name() default "DTYPE";
38
* DiscriminatorType discriminatorType() default STRING;
39
* String columnDefinition() default "";
40
* int length() default 31;
41
* }
42
* 注意:
43
* 1.@DiscriminatorColumn只能标注在顶层的类中,而不能标注在子类中。
44
* 2.@DiscriminatorColumn只在继承策略为“SINGLE_TABLE”和“JOINED”时使用。
45
* 3.name属性表示所标识具体类型的字段名称,默认为“DTYPE”
46
* 4.discriminatorType属性表示标识值的类型,默认为STRING字符串。public enum DiscriminatorType { STRING, CHAR, INTEGER };
47
* 5.columnDefinition属性表示生成字段的DDL语句,与@Column中的columnDefinition属性类似。
48
* 6.length属性表示为标识值的长度,默认为31。该属性只在使用DiscriminatorType. STRING时才需要设置。
49
*
50
* @DiscriminatorValue("resource")
51
* 使用@DiscriminatorValue注释,标注该实体类所实体标识字段的值.value的值表示所该实体的标注值。
52
* 如 @DiscriminatorValue("courseware")表示 标识字段resource_type的值为courseware是,可以认为是Courseware实体
53
*####################################################################################################################################
54
* 2.每个子类实体保存在一个表(Joined Subclass Strategy)
55
* 所有实体类的基类保存在一个表中,每增加一个子类增加一个映射子类的表。子类的表与父类中的通过主键(Primary Key)来关联。类似父类与子类之间是一对一的关系映射。
56
* 如:
57
* @Entity
58
* @Table(name = "Resource")
59
* @Inheritance(strategy=InheritanceType.JOINED)
60
* @DiscriminatorColumn(name="resource_type",discriminatorType=DiscriminatorType.STRING)
61
* @DiscriminatorValue("resource")
62
* 注意:这种用的比较多。采用每个实体类保存在一个表的继承策略,虽然避免了表中大量null值的数据,但每个实体是通过关联来获得的。
63
* 当有多个子类时,进行大量的查询会耗时很大,所以采取此策略时需要注意这些问题。
64
*#####################################################################################################################################
65
* 3.每个实体类保存在一个表(Table per Class Strategy)
66
* 每个实体都保存为一个表中,每个表中都包含实体类的所有属性(父类的和子类的)。
67
* @Entity
68
* @Table(name = "Resource")
69
* @Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
70
* @TableGenerator(
71
* name = "employee_gen",
72
* able = "tb_generator",
73
* pkColumnName = "gen_name",
74
* valueColumnName = "gen_value",
75
* pkColumnValue = "employee_id",
76
* allocationSize = 1)
77
*/
78
public
class Resource
implements Serializable{
79
private
static
final
long serialVersionUID = 8763866117518530428L;
80 @Id
81 @GeneratedValue(generator="system-uuid")
82 @GenericGenerator(name="system-uuid", strategy="uuid")
83 @Column(length=32)
84
private String id;
85
86 @Column(length = 50,name="NAME", nullable=
false)
87
private String name;
//
名称
88
89 @Column(length = 50,name="resNumber")
90
private String resNumber;
//
编号
91
92 @Column(length = 1000,name="description")
93
private String description;
//
描述
94
95
public String getId() {
96
return id;
97 }
98
99
public
void setId(String id) {
100
this.id = id;
101 }
102
103
public String getName() {
104
return name;
105 }
106
107
public
void setName(String name) {
108
this.name = name;
109 }
110
111
public String getResNumber() {
112
return resNumber;
113 }
114
115
public
void setResNumber(String resNumber) {
116
this.resNumber = resNumber;
117 }
118
119
public String getDescription() {
120
return description;
121 }
122
123
public
void setDescription(String description) {
124
this.description = description;
125 }
126
127
128
129 }
130
Courseware.java
1
package com.test.bean;
2
3
import java.io.Serializable;
4
5
import javax.persistence.Column;
6
7
/**
8
*<br> 文 件 名: Courseware.java
9
*<br> 创 建 人: zzn
10
*<br> 创建日期: Jul 14, 2010 10:43:05 AM
11
*/
12
/**
13
* 1.继承关系的实体保存在一个表
14
* @Entity
15
* @DiscriminatorValue("courseware")
16
*
17
* 2.每个子类实体保存在一个表
18
* @Entity
19
* @Table(name = "courseware_resource")
20
* @DiscriminatorValue("courseware")
21
* @PrimaryKeyJoinColumn(name="id")
22
*
23
* 3.每个实体类保存在一个表
24
* @Entity
25
* @Table(name = "courseware")
26
*
27
*/
28
29
public
class Courseware
extends Resource
implements Serializable {
30
private
static
final
long serialVersionUID = 5859492207003397084L;
31
32
/**
33
* 如果是1.继承关系的实体保存在一个表,id用的是父类的id
34
* 如果是2.每个子类实体保存在一个表,主键关联
35
*
36
*/
37
//
private String id;
38
39 @Column(name="courseTime")
40
private Integer courseTime;
//
学时
41
42 @Column(name="coursePoint")
43
private Integer coursePoint;
//
学分
44
45 @Column(name="aim", length=1000)
46
private String aim;
//
目标
47
48
//
@Override
49
//
public String getId() {
50
//
return id;
51
//
}
52
//
53
//
@Override
54
//
public void setId(String id) {
55
//
this.id = id;
56
//
}
57
58
public Integer getCourseTime() {
59
return courseTime;
60 }
61
62
public
void setCourseTime(Integer courseTime) {
63
this.courseTime = courseTime;
64 }
65
66
public Integer getCoursePoint() {
67
return coursePoint;
68 }
69
70
public
void setCoursePoint(Integer coursePoint) {
71
this.coursePoint = coursePoint;
72 }
73
74
public String getAim() {
75
return aim;
76 }
77
78
public
void setAim(String aim) {
79
this.aim = aim;
80 }
81
82 }
83
参考资料: http://blog.csdn.net/EJB_JPA/archive/2008/05.aspx