Mi para la clase Class1Item
es una referencia a una entrada en Class1
. Hibernate me necesita para definir una @IdClass
. La definición de una clase propia con la Id
de Class1
no funcionaba para mí.
Aquí está el error que estoy recibiendo:
org.springframework.beans.factory.UnsatisfiedDependencyException: Error al crear el frijol con el nombre 'requestMappingHandlerAdapter' se define en la ruta de clase de recursos [org Spring Framework / boot / AUTOCONFIGURE / web / servlet / WebMvcAutoConfiguration $ EnableWebMvcConfiguration.class /]: la dependencia Insatisfecho expresado a través del método 'requestMappingHandlerAdapter 'parámetro 1; la excepción jerarquizada es org.springframework.beans.factory.BeanCreationException: Error al crear el frijol con el nombre 'mvcConversionService' se define en la ruta de clase de recursos [org / Spring Framework / boot / AUTOCONFIGURE / web / servlet / WebMvcAutoConfiguration $ EnableWebMvcConfiguration.class]: creación de instancias a través de la haba de fábrica método fracasó; excepción anidada es org.springframework.beans.BeanInstantiationException: No se pudo instanciar [org.springframework.format.support. FormattingConversionService]: Método de fábrica 'mvcConversionService' produjo una excepción; excepción anidada es org.springframework.beans.factory.BeanCreationException: Error crear bean con el nombre 'bookItemRepository': Invocación de método init fallado; excepción anidada es java.lang.IllegalArgumentException: Esta clase [clase de.models.Class1Item] no define un IdClass
Las clases pertinentes que están todos en el mismo paquete:
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;
}
¿Cómo puedo solucionar este error, cuando en realidad hay un IdClass definidos?
Tiene una @IdClass definido, pero no la tecla re-declarado en su CLASSITEM @Entity. Ellos deben coincidir.
Es necesario añadir que de este modo:
@Entity
@IdClass(Class1ItemId.class)
// others
public class Class1Item implements Serializable {
@Id
private String key; // from your Class1ItemId
// others
}