Me encuentro bien con las anotaciones de Hibernate y he encontrado un problema con el que espero que alguien pueda ayudarme.
Tengo 2 entidades, Section y ScopeTopic. La sección tiene un miembro de la clase List, por lo que una relación de uno a muchos. Cuando ejecuto mi prueba unitaria, obtengo esta excepción:
Uso de @OneToMany o @ManyToMany para una clase no asignada: com.xxx.domain.Section.scopeTopic [com.xxx.domain.ScopeTopic]
¿Asumiría que el error implica que mi entidad ScopeTopic no está asignada a una tabla? No puedo ver con lo que hice mal. Aquí están las clases de entidad:
@Entity
public class Section {
private Long id;
private List<ScopeTopic> scopeTopics;
public Section() {}
@Id
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
@OneToMany
@JoinTable(name = "section_scope", joinColumns = {@JoinColumn(name="section_id")},
inverseJoinColumns = {@JoinColumn(name="scope_topic_id")} )
public List<ScopeTopic> getScopeTopic() {
return scopeTopic;
}
public void setScopeTopic(List<ScopeTopic> scopeTopic) {
this.scopeTopic = scopeTopic;
}
}
@Entity
@Table(name = "scope_topic")
public class ScopeTopic {
private Long id;
private String topic;
public ScopeTopic() {}
@Id
public Long getId() {
return id;
}
public void setId() {
this.id = id;
}
public String getTopic() {
return topic;
}
public void setTopic(String topic) {
this.topic = topic;
}
}
Estoy bastante seguro de que es mi propia falta de comprensión lo que tiene la culpa, así que alguna orientación sería genial, ¡gracias!
packagesToScan
El mío no tenía
@Entity
en la entidad de muchos ladosfuente
Es posible que su entidad no aparezca en el archivo de configuración de hibernación.
fuente
Principalmente
Hibernate
, es necesario agregar laEntity
clase enhibernate.cfg.xml
like-fuente
Si está utilizando la configuración de Java en un proyecto spring-data-jpa, asegúrese de que está escaneando el paquete en el que se encuentra la entidad. Por ejemplo, si la entidad vivía com.foo.myservice.things , la siguiente anotación de configuración a continuación no lo haría recógelo.
Puede solucionarlo aflojándolo a solo com.foo.myservice (por supuesto, tenga en cuenta cualquier otro efecto de ampliar su alcance para buscar entidades).
fuente
En mi caso, tengo que agregar mis clases, al construir el
SessionFactory
, conaddAnnotationClass
fuente
Tuve el mismo problema y pude resolverlo agregando la entidad en persistence.xml. El problema se debió al hecho de que la entidad no se agregó a la configuración de persistencia. Edite su archivo de persistencia:
...
fuente