Estou me acostumando com as anotações do Hibernate e encontrei um problema no qual espero que alguém possa ajudar.
Eu tenho 2 entidades, Seção e ScopeTopic. A seção tem um membro da classe List, portanto, um relacionamento Um para Muitos. Quando executo meu teste de unidade, recebo esta exceção:
Uso de @OneToMany ou @ManyToMany visando uma classe não mapeada: com.xxx.domain.Section.scopeTopic [com.xxx.domain.ScopeTopic]
Eu presumiria que o erro implica que minha entidade ScopeTopic não está mapeada para uma tabela. Não consigo ver se fiz algo errado. Aqui estão as classes de Entidade:
@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;
}
}
Tenho certeza de que é minha própria falta de compreensão que está em falta, então alguma orientação seria ótima, obrigado!
packagesToScan
O meu não tinha
@Entity
na entidade muitos ladosfonte
Sua entidade pode não estar listada no arquivo de configuração de hibernação.
fonte
Principalmente em
Hibernate
, necessidade de adicionar aEntity
classe emhibernate.cfg.xml
como-fonte
Se você estiver usando a configuração Java em um projeto spring-data-jpa, certifique-se de escanear o pacote em que a entidade está. Por exemplo, se a entidade vivesse com.foo.myservice.things , a seguinte anotação de configuração abaixo não pegar.
Você pode corrigi-lo abrindo-o para apenas com.foo.myservice (claro, lembre-se de quaisquer outros efeitos de ampliar seu escopo para verificar entidades).
fonte
Eu tive o mesmo problema e poderia resolvê-lo adicionando a entidade em persistence.xml. O problema foi causado porque a entidade não foi adicionada à configuração de persistência. Edite seu arquivo de persistência:
...
fonte
No meu caso, um tem que adicionar minhas classes, ao construir o
SessionFactory
, comaddAnnotationClass
fonte