A Y*_*A Y 2 java spring hibernate jpa
我的 for 类Class1Item
是对Class1
. Hibernate 需要我定义一个@IdClass
. 使用Id
of定义自己的类Class1
对我不起作用。
这是我得到的错误:
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;
}
Run Code Online (Sandbox Code Playgroud)
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;
}
Run Code Online (Sandbox Code Playgroud)
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;
}
Run Code Online (Sandbox Code Playgroud)
import javax.persistence.Id;
import java.io.Serializable;
public class Class1ItemId implements Serializable {
@Id
private String key;
}
Run Code Online (Sandbox Code Playgroud)
当实际定义了 IdClass 时,如何修复此错误?
您定义了一个 @IdClass,但没有在 ClassItem @Entity 中重新声明密钥。他们必须匹配。
您需要像这样添加它们:
@Entity
@IdClass(Class1ItemId.class)
// others
public class Class1Item implements Serializable {
@Id
private String key; // from your Class1ItemId
// others
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1997 次 |
最近记录: |