簡體   English   中英

此類未定義 IdClass

[英]This class does not define an IdClass

My for class Class1Item是對Class1條目的引用。 Hibernate 需要我定義一個@IdClass 使用Class1Id定義自己的類對我不起作用。

這是我得到的錯誤:

org.springframework.beans.factory.UnsatisfiedDependencyException:在類路徑資源[org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration$EnableWebMvcConfiguration.class]中定義名稱為“requestMappingHandlerAdapter”的bean創建錯誤:通過方法“requestMappingHandlerAdapter”表達的不滿意依賴' 參數 1; 嵌套異常是 org.springframework.beans.factory.BeanCreationException:在類路徑資源 [org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration$EnableWebMvcConfiguration.class] 中定義的名稱為“mvcConversionService”的 bean 創建時出錯:通過工廠進行 Bean 實例化方法失敗; 嵌套異常是 org.springframework.beans.BeanInstantiationException:無法實例化 [org.springframework.format.support.FormattingConversionService]:工廠方法 'mvcConversionService' 拋出異常; 嵌套異常是 org.springframework.beans.factory.BeanCreationException:創建名為“bookItemRepository”的 bean 時出錯:調用 init 方法失敗; 嵌套異常是 java.lang.IllegalArgumentException:此類 [class 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

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM