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