多列hibernate与额外列的映射?

时间:2012-05-02 14:53:44

标签: hibernate hibernate-mapping

嗨,我在连接表中有多对多列映射。 表结构看起来像这样。

table vendor{vendor_id, vendor_name, vendor_password, etc...}
table student{student_id, student_name, student_password, etc..}
table test{test_id, test_subject, test_price,test_level, etc..}

关系如下

vendor to test --> many-to-many
student to test --> many-to-many

链接

table vendor_student_test{vendor_id, student_id, test_id, purchasedDate, assignedDate, writtenDate, result}

我按如下方式创建了POJO课程

  1. Vendor.java
  2. public class Vendor {
    Long vendorId;
    Set<VendorStudentTest> tests;
    //set and get
    }
    
    1. Student.java
    2. public class Student{
      Long studentId;
      Set<VendorStudentTest> tests;
      //set and get
      }
      
      1. Test.java
      2. public class Test{
        Long test_id;
        double test_price;
        //set and get and remaining fields
        }
        
        1. VendorStudentTest.java
        2. public class VendorStudentTest{
          public VendorStudentTestPK vendorStudentTestPK;
          Date purchasedDate;
          Date assignDate;
          Date writtenDate;
          double result;
          //set and get accordingly
          }
          
          1. VendorStudentTestPK.java
          2. public class VendorStudentTestPK{
            Long vendor_id;
            Long student_id;
            Long test_id;
            }
            

            Hibernate映射文件如下

            vendor.hbm.xml

            <set name="tests" table="vendor_student_test"
                            inverse="true" lazy="true" fetch="select">
                        <key>
                            <column name="vendor_id" not-null="true" />
                        </key>
                        <one-to-many class="VendorStudentTest" />
                    </set>
            

            vendor_student_test.hbm.xml

                <composite-id name="vendorStudentTestPK"
                    class="com.onlineexam.model.VendorStudentTestPK">
            
                    <key-property name="vendor" column="vendor_id"
                        type="java.lang.Long" />
                    <key-property name="student" column="student_id"
                        type="java.lang.Long" />
                    <key-property name="test" column="test_id" type="java.lang.Long" />
            
                </composite-id>
            

            student.hbm.xml

            <set name="tests" table="vendor_student_test"
                            inverse="true" lazy="true" fetch="select">
                        <key>
                            <column name="student_id" not-null="true" />
                        </key>
                        <one-to-many class="VendorStudentTest" />
                    </set>
            

            test.hbm.xml

            //this is mapped to other table 
            

            我是hibernate的新手,这是正确的映射吗?

1 个答案:

答案 0 :(得分:1)

带有注释案例的

解决方案可以在这里找到

How Do I Create Many to Many Hibernate Mapping for Additional Property from the Join Table?

使用xml文件的解决方案可以在这里找到: Mapping same class relation

在这里:

Mapping same class relation - continuation