在查找属性时找不到org.hibernate.MappingException类

时间:2014-07-09 04:50:46

标签: java hibernate ant hibernate-mapping composite-primary-key

请帮助我,我真的需要帮助...... 我在hibernate中创建了一个复合id。这是我有的东西

PurchasedTestId.java

package jp.go.mhlw.vaccine.draft;

import java.io.Serializable;

public class PurchasedTestId implements Serializable {

private static final long serialVersionUID = 1L;

private Long testId;
private Long customerId;

// an easy initializing constructor
public PurchasedTestId(Long testId, Long customerId) {
    this.testId = testId;
    this.customerId = customerId;
}
      // generate setters and getters here
}

这是我的vaccin.hbm.xml文件

<class name="jp.go.mhlw.vaccine.draft.PurchasedTestttt" table="PurchasedTesttt">
        <composite-id name="purchasedTestId" class="jp.go.mhlw.vaccine.draft.PurchasedTestId">
            <key-property name="testId" >
                <column name="testId" ></column>
            </key-property>
            <key-property name="customerId"  column="customerId" />  
        </composite-id>
        <property name="name" column="name" type="string" />
    </class>

我正在使用Ant构建(使用bulld.xml文件)来生成Domain类和DB shema,在我的情况下只会生成类PurchasedTestttt,我之前创建了类PurchasedTestId。 每当我开始运行工具时它会抛出

org.hibernate.MappingException: class jp.go.mhlw.vaccine.draft.PurchasedTestId not found while looking for property: testId

但在我的vaccin.hbm.xml文件中,我可以按住控制键并单击

jp.go.mhlw.vaccine.draft.PurchasedTestId

它立即跳转到具有相同包名的PurchasedTestId.java文件。显然,PurchasedTestId类在我的classpath中。我已经搜索了很多天,但我无法解决我的问题。请帮我弄清楚它是什么是的。我太累了 请帮帮我。

1 个答案:

答案 0 :(得分:1)

您不必在hbm.xml文件中指定composite-id的;您必须在PurchasedTestttt类中设置属性的名称。 例如。它必须看起来像:

Class PurchasedTestttt:

public class PurchasedTestttt {
    PurchasedTestId purchasedTestId;

    public PurchasedTestId getPurchasedTestId() {
       return purchasedTestId;
    }
    public void setPurchasedTestId(PurchasedTestId purchasedTestId) {
        this.purchasedTestId = purchasedTestId;
    }
    ....
}

*的hbm.xml:

<class name=”entities.PurchasedTestttt”>
    <composite-id name=”purchasedTestId”>
        <key-property name=”testId” column=”TEST_ID” />
        <key-property name=”customerId” column=”CUSTOMER_ID” />
    </composite-id>
    ...
</class>

用于composite-id的类必须具有与* .hbm.xml中指定的名称相同的属性,但Hibernate不需要知道您用于该类的类。