Struts2-Hibernate注释:使用外键映射表和子表

时间:2013-12-09 18:20:10

标签: hibernate struts2 foreign-keys hibernate-mapping composite-primary-key

每个人都非常有帮助,因为我尝试在转换项目中使用Oracle学习使用Hibernate的Struts2,我真的很感激。在完成我的项目之前,我已经遇到了一个新的障碍,我希望这是我的最后一次。我的数据库已经存在,所以我不想让我的DBA参与其中。

我有一个表单,允许用户通过product_name查询products表中的产品。我需要显示找到的产品及其定价表中的相应定价数据。这种关系是一对多的,因为对于产品中的每一行,定价表中可以有零到多个相应的行。

 product table     pricing table
 PRODUCT_NAME      PRODUCT_NAME
 STATE_CD          STATE_CD
 column3           RATE_TYPE
 column4           RATE
 column5
 column6

product表具有product_name和state_cd的复合键主键(product_pk)。定价表具有product_name,state_cd和rate_type的复合主键(pricing_pk)。定价表还有一个产品和state_cd的复合外键(product_pricing_fk)。

我一直在阅读一些关于如何设置它的页面,但我感到比起初时更加困惑。我基本上不知道如何使用注释进行设置。

问题#1 - 我目前有一个Product.java类,每个字段都有getter和setter,它正确显示我的结果。我没有正确的是我如何表明该表有一个复合键。

问题#2 - 我是否需要为定价表创建一个单独的类,其中包含定价表中每个字段的getter和setter,或者这些字段是否在Product.java中?

问题#3 - 如何判断外键?

这是我目前的Product.java。

 package com.memo.model;

 import java.io.Serializable;
 import java.sql.Date;
 import java.util.List;
 import java.util.ArrayList;

 import javax.persistence.Id;
 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.Table;

 @Entity
 @Table(name = "Product")
 public class Product implements Serializable {

     private static final long serialVersionUID = 1L;

     private String productName;
     private String stateCd;
     private String column3;

         @Id
     @Column(name = "PRODUCT_NAME")
     public String getProductName() {
             return productName;
     }

     @Id
     @Column(name = "STATE_CD")
     public String getStateCd() {
     return stateCd;
     }

     @Column(name = "COLUMN3")
     public String getColumn3() {
     return column3;
     }

     ....

     public void setProduct(String product) {
             this.product = product;
     }

     public void setStateCd(String stateCd) {
     this.stateCd = stateCd;
     }

     public void setColumn3(String column3) {
     this.column3 = column3;
     }

     ...

任何帮助将不胜感激!!!

0 个答案:

没有答案