【问题标题】:Hibernate mapping different Table to one POJO classHibernate 将不同的表映射到一个 POJO 类
【发布时间】:2014-02-21 05:29:13
【问题描述】:

Hibernate 将不同的表映射到一个 POJO 类

我需要在休眠中将两个不同的表映射到一个 POJO 类。

我尝试使用 join 配置休眠映射,但出现类似

的错误

DB2 SQL Error: SQLCODE=-204, SQLSTATE=42704.

我的表关系如图。

我的休眠映射如下。

<hibernate-mapping>
    <class name="com.mydomain.Student" table="STUDENT_TABLE" schema="UNIV">
        <id name="id" type="java.lang.Integer">
            <column name="ID" />
            <generator class="native" />
        </id>

        <property name="studentId" type="java.lang.Integer">
            <column name="STUDENT_ID" />
        </property>

        <property name="course" type="java.lang.Integer">
            <column name="COURSE_ID" />
        </property>

        <join table="COURSE_TABLE"  >  
            <key column="COURSE_ID" />    
                <property name="courseName" type="string">
                  <column name="COURSE_NAM" />
                        </property>  

                        <property name="courseTeacher" type="string">
                    <column name="COURSE_Teacher" />
                         </property>            

        </join>

   </class>

</hibernate-mapping>

我的学生班级有 getter 和 setter for。

id
studentId
    course
courseName
courseTeacher

有人可以帮我解决这个映射问题吗?

【问题讨论】:

  • 您的要求有点出乎意料。您的映射似乎变得混乱。查看您的学生课程,studentId 似乎是外键...其中将包含学生的详细信息,而 id 将是其余字段的主键。是吗?

标签: hibernate db2 hibernate-mapping


【解决方案1】:

看到你的表关系图后。你的数据库设计是错误的。

一名学生可以注册多于 1 门课程。 1门课程可以 包含超过 1 名学生。

所以基本上它是一个ma​​ny-many映射。

这里有一些示例供您实现。

Example1

Example2

更新

我以正确的方式即兴创作你的设计。但是如果你仍然坚持它的 0ne-one 映射,那么这里是一个similar question with answer。您将要求 id 准确,以便它仅对应于一条记录。看看hibernate-doc 也是一样的。

【讨论】:

  • 我只是举这个例子。我的表关系只是一对一的。
  • 基本上我想使用不是学生表中主要列的列。
  • 我的问题是如何将多个表映射到单个 pojo。即当我选择学生时,我也想获得课程名称和课程老师。
【解决方案2】:

您是否在休眠映射中验证了所有列的名称是否正确?查找error code -204,它显示“名称是未定义的名称”。

【讨论】:

    猜你喜欢
    • 2010-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-31
    • 2014-01-15
    • 2013-08-20
    • 1970-01-01
    • 2019-11-14
    相关资源
    最近更新 更多