私はIDHOLIDAYPACKAGE
がHolidayPackageVariantとHolidayPackage間多く一つに関係してHolidayPackageエンティティを指しテーブルHolidayPackageVariant
で複合主キー(IDHOLIDAYPACKAGE, IDHOLIDAYPACKAGEVARIANT)
を持っています。私のEmbeddedIdが休止状態にならないのはなぜですか?
私はHolidayPackageVariantでcompundのPKマッピングをしようとすると、私は次のエラーを取得する:
Initial SessionFactory creation failed.org.hibernate.annotations.common.AssertionFailure: Declaring class is not found in the inheritance state hierarchy: org.wah.model.holidaypackage.HolidayPackageVariantPrimaryKey
誰かが私がここで間違って何をやっている私に教えていただけますか?
MY POJOのは次のようになります。私は@EmbeddedId
で一度戦ってきた、と私は同じ目標を達成し終えた
HolidayPackageVariant:
@Entity
@Table(name="HOLIDAYPACKAGEVARIANT")
public final class HolidayPackageVariant {
private HolidayPackageVariantPrimaryKey idCompound;
@EmbeddedId
public HolidayPackageVariantPrimaryKey getIdCompound() {
return idCompound;
}
// other code
}
HolidayPackageVariantPrimaryKey
@Embeddable
public final class HolidayPackageVariantPrimaryKey implements Serializable {
private Integer idHolidayPackageVariant;
private HolidayPackage holidayPackage;
public HolidayPackageVariantPrimaryKey(){}
public HolidayPackageVariantPrimaryKey(int id, HolidayPackage pkg){
setIdHolidayPackageVariant(id);
setHolidayPackage(pkg);
}
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "IDHOLIDAYPACKAGEVARIANT", nullable = false)
public Integer getIdHolidayPackageVariant() {
return idHolidayPackageVariant;
}
@Id
@ManyToOne(fetch=FetchType.LAZY, cascade={CascadeType.ALL})
@JoinColumn(name="IDHOLIDAYPACKAGE", nullable=false)
public HolidayPackage getHolidayPackage() {
return holidayPackage;
}
// equals and hashCode
}
HolidayPackage
public final class HolidayPackage {
private Set<HolidayPackageVariant> holidayPackageVariants = new HashSet<HolidayPackageVariant>(0);
@OneToMany(fetch=FetchType.LAZY, cascade={CascadeType.ALL}, mappedBy = "idCompound.holidayPackage")
public Set<HolidayPackageVariant> getHolidayPackageVariants() {
return holidayPackageVariants;
}
// other code
}
こんにちは@brainydexter、この質問への正しい答えを変更してください。私はそれを修正しなければならなかったし、ここに戻ってきて、それが既にそこにあることを認識するためだけに答えを投稿する。 – coderatchet
@coderatchet done。それを指摘してくれてありがとう。これは私のレーダーから落ちたので、もはや冬眠のものをやっていない。 – brainydexter