Пожалуйста, помогите мне, мне действительно нужна помощь... Я создаю составной идентификатор в hibernate.Here вещи, которые у меня есть
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 build (используя файл bulld.xml) для создания класса Domain и DB shema, только класс BuyasedTestttt будет сгенерирован в моем случае, ранее я создал класс BuyasedTestId. Когда я начинаю запускать инструменты, он бросает
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 с тем же именем пакета. Обычно класс BuyasedTestId находится в моем пути к классам. Я много искал в течение 2 дней, но я не мог решить свою проблему. Пожалуйста, помогите мне разобраться, что это такое. Я так устал Пожалуйста, помогите мне.
Вам не нужно указывать класс составного идентификатора в файле hbm.xml; вы должны указать имя свойства в вашем классе PurchasedTestttt. Например, это должно выглядеть так:
Класс PurchaseTestttt:
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>
Важно, чтобы класс, который вы используете для составного идентификатора, имеет свойства с тем же именем, что указано в *.hbm.xml, но Hibernate не должен знать класс, который вы использовали для этого.