开发运行环境:OEPE 12c(12.1.1.1.0)+ WebLogic Server 12c(12.1.1.1.0)+ Oracle Database 10g Express Edition 10.2.0.1
3. 默认自动关联的Table Association
4. 选择TECHNICIANPRIVATEDATA 和 TECHNICIAN 关联关系
取消勾上Generate this association,因为我们不想建立二者之间一对多的关联关系,之后会手工建立二者之间一对一的关联关系。
5. 选择TICKETHISTORY 和 TECHNICIAN 关联关系
取消勾上Generate a reference to a collection of TICKETHISTORY in TECHNICIAN,因为我们不想在TECHNICIAN中有TICKETHISTORY 集合对象。
也就是说,二者是一个单向一对多的关系。
6. 选择TICKETHISTORY 和 TICKET 关联关系
修改Property,把tickethistories 改为ticketHistory,这样更符合Java命名规范。
7. 点击绿色的加号,手工建立TECHNICIANPRIVATEDATA 和 TECHNICIAN 关联关系
(3)选择一对一的关联关系
8. 准备生成Entity的Java类
(3)修改不符合Java规范的类名。
(4)修改不符合Java规范的变量名。
创建JPA Entities有两种方式,一种是根据数据库表来创建,另一种是根据POJO类来创建。
我们先介绍第一种,再介绍第二种。
1. 右键TroubleTicketSystemServer,选择JPA Tools,选择Generate Entities from Tables
2. 选择除Department表以外的其它表,Department Entity我们将通过POJO类创建。
取消勾上Generate this association,因为我们不想建立二者之间一对多的关联关系,之后会手工建立二者之间一对一的关联关系。
5. 选择TICKETHISTORY 和 TECHNICIAN 关联关系
取消勾上Generate a reference to a collection of TICKETHISTORY in TECHNICIAN,因为我们不想在TECHNICIAN中有TICKETHISTORY 集合对象。
也就是说,二者是一个单向一对多的关系。
6. 选择TICKETHISTORY 和 TICKET 关联关系
7. 点击绿色的加号,手工建立TECHNICIANPRIVATEDATA 和 TECHNICIAN 关联关系
(1)选择Simple association,并选择相应的表
(2)选择两个表的关联主键(3)选择一对一的关联关系
(1)Collection类型选择Set,并设置package路径
(2)默认要生成的Entities
(4)修改不符合Java规范的变量名。
9. 查看生成的Entity Java类
(1)@Basic批注
不带批注的Property,默认是@Basic类型
(2)@Column批注
表示对应数据库表中的字段,包括名称、是否唯一、长度、是否允许为null。
(3)@Id批注
表示主键
(4)@OneToOne批注
(1)@Basic批注
不带批注的Property,默认是@Basic类型
(2)@Column批注
表示对应数据库表中的字段,包括名称、是否唯一、长度、是否允许为null。
(3)@Id批注
表示主键
(4)@OneToOne批注
表示一对一的关联关系,
其中在源方Entity定义中后面跟@JointColumn 批注,表示与目标Entity中关联的数据库字段;
比如在TechnicianPrivateData.java中:
//bi-directional one-to-one association to Technician
@OneToOne
@JoinColumn(name="ID")
private Technician technician;
在目标方Entity定义中会使用mappedBy来指向源方引用的属性名称。
比如在Technician.java中:
// bi-directional one-to-one association to TechnicianPrivateData
@OneToOne(mappedBy = "technician")
private TechnicianPrivateData technicianPrivateData;
(5)@OneToMany批注
表示一个Entity A可以有多个Entity B;但是两个 Entity B 不可以被同一个 Entity A引用 。
比如一个Technician可以有多个Tickets,但是一个Ticket只能被一个Technician引用。
比如在Technician.java中:
// bi-directional many-to-one association to Ticket
@OneToMany(mappedBy = "technician")
private Set tickets;
表示一个Entity A可以有多个Entity B;但是两个 Entity B 不可以被同一个 Entity A引用 。
比如一个Technician可以有多个Tickets,但是一个Ticket只能被一个Technician引用。
比如在Technician.java中:
// bi-directional many-to-one association to Ticket
@OneToMany(mappedBy = "technician")
private Set
(6)@ManyToOne批注
表示多个Entity A可以被同一个Entity B引用。
比如在Ticket.java中:
//bi-directional many-to-one association to Technician
@ManyToOne
@JoinColumn(name="TECHNICIANID")
private Technician technician;
表示多个Entity A可以被同一个Entity B引用。
比如在Ticket.java中:
//bi-directional many-to-one association to Technician
@ManyToOne
@JoinColumn(name="TECHNICIANID")
private Technician technician;
在@ManyToOne批注中还可以定义FetchType,可以设置的值有FetchType.EAGER(默认),FetchType.LAZY。
没有评论:
发表评论