开发环境:NetBeans 7.1。
我在《开发JavaEE 6 应用之十四:使用CDI Event实现观察者模式》基础上使用JPA实现多主键映射。
1. 创建多主键表:COMPOSITE_CUSTOMER
打开项目JavaEE6SampleApp,切换到服务Tab,选择数据库节点,右键 jdbc:derby://localhost:1527/sample [Appshang的app],选择连接。
在SQL窗口输入:
2. 创建多主键表:COMPOSITE_CUSTOMER
具体步骤与《开发JavaEE 6 应用之三:创建JPA实体》类似。
不过,完成后,会生成两个Java文件:
2.1 多主键类:CompositeCustomerPK.java
多主键类要求:
(1)要有无参构造方法。
(2)要实现序列化接口
(3)Override hashCode方法和equals方法
其中,类标注@Embeddable表明该类不是一个实体,而是嵌入别的实体中的一个属性。
2.2 JPA实体类:CompositeCustomer.java
3. 修改CustomerSessionBean,增加addCompositeCustomer方法
4. 修改TestServlet,增加addcc操作处理
5. 运行TestServlet
在TestServlet后面增加参数:http://localhost:8080/JavaEE6SampleApp/TestServlet?addcc=100
检查数据库,发现COMPOSITE_CUSTOMER表中增加了新的数据。
Project下载:JavaEE6SampleApp(CompositeKey).7z
参考文献:
1. http://stackoverflow.com/questions/4705088/jpa-2-multiple-column-usage-in-foreign-keys
2. http://weblogs.java.net/blog/bleonard/archive/2006/11/using_composite.html
3. http://jerval.iteye.com/blog/875826
4. http://melin.iteye.com/blog/197217
我在《开发JavaEE 6 应用之十四:使用CDI Event实现观察者模式》基础上使用JPA实现多主键映射。
1. 创建多主键表:COMPOSITE_CUSTOMER
打开项目JavaEE6SampleApp,切换到服务Tab,选择数据库节点,右键 jdbc:derby://localhost:1527/sample [Appshang的app],选择连接。
在SQL窗口输入:
DROP TABLE COMPOSITE_CUSTOMER; CREATE TABLE COMPOSITE_CUSTOMER ( FIRST_NAME VARCHAR(10), LAST_NAME VARCHAR(10), Mobile_Phone int, ADDRESS VARCHAR(100), CONSTRAINT COMPOSITE_CUSTOMER_PK PRIMARY KEY ( FIRST_NAME, LAST_NAME ) )
2. 创建多主键表:COMPOSITE_CUSTOMER
具体步骤与《开发JavaEE 6 应用之三:创建JPA实体》类似。
不过,完成后,会生成两个Java文件:
2.1 多主键类:CompositeCustomerPK.java
多主键类要求:
(1)要有无参构造方法。
(2)要实现序列化接口
(3)Override hashCode方法和equals方法
其中,类标注@Embeddable表明该类不是一个实体,而是嵌入别的实体中的一个属性。
2.2 JPA实体类:CompositeCustomer.java
3. 修改CustomerSessionBean,增加addCompositeCustomer方法
public void addCompositeCustomer(String firstName, String lastName, Integer mobilePhone, String address) { CompositeCustomer cc = new CompositeCustomer(firstName, lastName); cc.setMobilePhone(1234567890); cc.setAddress(address); em.persist(cc); }
4. 修改TestServlet,增加addcc操作处理
String ccid = request.getParameter("addcc"); if (ccid != null) { bean.addCompositeCustomer("Ping" + ccid, "Ma" + ccid, 1234567890, "China Beijing"); ... }
5. 运行TestServlet
在TestServlet后面增加参数:http://localhost:8080/JavaEE6SampleApp/TestServlet?addcc=100
检查数据库,发现COMPOSITE_CUSTOMER表中增加了新的数据。
Project下载:JavaEE6SampleApp(CompositeKey).7z
参考文献:
1. http://stackoverflow.com/questions/4705088/jpa-2-multiple-column-usage-in-foreign-keys
2. http://weblogs.java.net/blog/bleonard/archive/2006/11/using_composite.html
3. http://jerval.iteye.com/blog/875826
4. http://melin.iteye.com/blog/197217
没有评论:
发表评论