Hibernate映射:在现有数据库中为连接操作创建FK关系

时间:2013-12-03 11:18:52

标签: java mysql hibernate

我有一个我无法改变的现有数据库。有两个表,一个(A)带PK,一个带(B),FK指向第一个PK。各列分别命名为(A).page_id和(B).cl_from。 在Hibernate映射中,我可以为第一个设置id,映射PK。我也可以为一对多的关系设置一个包。 对于第二种,我不需要id,而是需要多对一的关系。如何在没有id的情况下设置多对一关系?我不想在类中插入一个id .. 我试图设置一个复合键,但没有运气..

// The PK class
<class name="Words" table="PAGE">
  <id name="id" column="PAGE_ID" />
  <property name="text" column="PAGE_TITLE" />  
  <bag cascade="all-delete-orphan" inverse="true" lazy="false" name="wordPages">
     <key column="PAGE_ID"/>
     <one-to-many class="CategoryItems"/>
  </bag>
</class>

// The FK class
<class name="CategoryItems" table="CATEGORYLINKS" >
  <composite-id> 
    <key-many-to-one name="id" column="CL_FROM" />
  </composite-id>
  <property name="text" column="CL_TO" />
</class>

我的班级:

 public class Words {

 private Long id;
 private String text;
 private ArrayList wordPages;
// getters - setters

public class CategoryItems implements Serializable  {

/**
 * 
 */
  private static final long serialVersionUID = 1L;
  private Long id;
  private String text;

//getters-setters

我得到的最新错误是:An association from the table CATEGORYLINKS refers to an unmapped class: java.lang.Long

1 个答案:

答案 0 :(得分:1)

应该有助于以下代码:

public class CategoryItems implements Serializable  
{
  private static final long serialVersionUID = 1L;
  private Words id;
  private String text;

  //getters-setters
}