クラスのための私は、Class1Item
内のエントリへの参照ですClass1
。Hibernateは定義するために私を必要とします@IdClass
。自分のクラスを定義するId
のは、Class1
私のために動作しませんでした。
ここで私は取得していますエラーは次のとおりです。
org.springframework.beans.factory.UnsatisfiedDependencyException:エラー 'requestMappingHandlerAdapterは、' クラスパスのリソースで定義された名前を持つBeanを作成[ORG / springframework /ブーツ/自動設定/ウェブ/サーブレット/ WebMvcAutoConfiguration $ EnableWebMvcConfiguration.class]:メソッド「requestMappingHandlerAdapterを通して表現不満依存'パラメータ1。エラークラスパスリソースで定義された名前「mvcConversionService」を持つBeanを作成[ORG / springframework /ブーツ/自動設定/ウェブ/サーブレット/ WebMvcAutoConfiguration $ EnableWebMvcConfiguration.class]:豆のインスタンス化工場を経由して、ネストされた例外はorg.springframework.beans.factory.BeanCreationExceptionですこの方法は失敗しました。インスタンス化に失敗しました[org.springframework.format.support:ネストされた例外はorg.springframework.beans.BeanInstantiationExceptionです。FormattingConversionService]:例外投げたファクトリメソッド 'mvcConversionService'; ネストされた例外はorg.springframework.beans.factory.BeanCreationExceptionです:名「bookItemRepository」を持つBeanを作成中にエラーが発生します。initメソッドの呼び出しに失敗しました。ネストされた例外は、java.lang.IllegalArgumentExceptionがある:このクラス[クラスde.models.Class1Item]はIdClassを定義していません。
同じパッケージ内のすべてのある関連クラスの一覧:
import javax.persistence.*;
import javax.validation.constraints.NotNull;
import lombok.*;
import java.io.Serializable;
import java.time.LocalDate;
import java.util.List;
@Entity
@Setter
@Getter
@NoArgsConstructor
@IdClass(Class1ItemId.class)
public class Class1Item implements Serializable {
@Id
@ManyToOne
@JoinColumn(name="reference")
private Class1 class1;
@NotNull
@GeneratedValue
private Long number;
@Column(name="date_one")
private LocalDate date1;
@Column(name="date_x")
private LocalDate dateX;
@ManyToOne
@JoinColumn(name="userReference")
private User userReference;
@ManyToMany
@JoinColumn(name="waitingUsers")
private List<User> waitingUsers;
@NotNull
@Enumerated(EnumType.STRING)
@Column(name="enumX")
private EnumX enumX;
}
import javax.persistence.*;
import javax.validation.constraints.NotBlank;
import lombok.*;
import java.io.Serializable;
@Entity
@Setter
@Getter
@NoArgsConstructor
public class Class1 implements Serializable {
@Id
@NotBlank
private String key;
@NotBlank
private String name;
@NotBlank
private String nameF;
@NotBlank
private String nameL;
private String path;
}
import javax.persistence.*;
import javax.validation.constraints.NotNull;
import lombok.*;
import java.io.Serializable;
import java.util.Set;
@Entity
@Setter
@Getter
@NoArgsConstructor
public class User implements Serializable {
@Id
@Column(name="UserID")
private Long id;
@NotNull
@Column(name="email",unique=true)
private String email;
@NotNull
@Column(name="user_firstname")
private String firstName;
@NotNull
@Column(name="user_lastname")
private String lastName;
@NotNull
@Column(name="isAdmin")
private Boolean isAdmin;
@ManyToMany
@Column(name="wantedItems")
private Set<Class1Item> wantedItems;
@OneToMany
@Column(name="borrowedItems")
private Set<Class1Item> itemsBorrowed;
}
import javax.persistence.Id;
import java.io.Serializable;
public class Class1ItemId implements Serializable {
@Id
private String key;
}
実際にIdClassが定義だとき、どのように私はこのエラーを修正しますか?
あなたは@IdClassが定義されていますが、キーあなたのClassItem @Entityで再宣言されていません。彼らは一致している必要があります。
あなたはそのようにそれらを追加する必要があります。
@Entity
@IdClass(Class1ItemId.class)
// others
public class Class1Item implements Serializable {
@Id
private String key; // from your Class1ItemId
// others
}