Hibernate Annotations로 내 발을 찾고 있는데 누군가가 도울 수 있기를 바라는 문제에 부딪 혔습니다.
2 개의 엔티티, Section 및 ScopeTopic이 있습니다. 섹션에는 List 클래스 멤버가 있으므로 일대 다 관계입니다. 단위 테스트를 실행할 때이 예외가 발생합니다.
매핑되지 않은 클래스를 대상으로하는 @OneToMany 또는 @ManyToMany 사용 : com.xxx.domain.Section.scopeTopic [com.xxx.domain.ScopeTopic]
오류가 내 ScopeTopic 엔터티가 테이블에 매핑되지 않았 음을 의미한다고 가정합니다. 나는 내가 잘못한 것을 볼 수 없습니다. 다음은 Entity 클래스입니다.
@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;
}
}
나는 내 자신의 이해 부족이 잘못이라고 확신하므로 약간의 지침이 좋을 것입니다. 감사합니다!
답변
주석이 괜찮아 보입니다. 확인해야 할 사항은 다음과 같습니다.
-
주석이이
javax.persistence.Entity
아니라 인지 확인하십시오org.hibernate.annotations.Entity
. 전자는 엔티티를 탐지 가능하게 만듭니다. 후자는 추가 일뿐입니다. -
엔티티를 수동으로 나열하는 경우 (persistence.xml, hibernate.cfg.xml 또는 세션 팩토리 구성시)
ScopeTopic
엔티티 도 나열했는지 확인하십시오. -
ScopeTopic
다른 패키지에 여러 클래스 가 없는지 , 잘못된 클래스를 가져 왔는지 확인하십시오.
답변
내 것은 @Entity
다방면에 존재 하지 않았다
@Entity // this was commented
@Table(name = "some_table")
public class ChildEntity {
@JoinColumn(name = "parent", referencedColumnName = "id")
@ManyToOne
private ParentEntity parentEntity;
}
답변
엔티티가 최대 절전 구성 파일에 나열되지 않을 수 있습니다.
답변
대부분의 Hibernate
, 필요성은 추가 Entity
로 클래스를 hibernate.cfg.xml
같은 –
<hibernate-configuration>
<session-factory>
....
<mapping class="xxx.xxx.yourEntityName"/>
</session-factory>
</hibernate-configuration>
답변
spring-data-jpa 프로젝트에서 Java 구성을 사용하는 경우 엔티티가있는 패키지를 스캔하고 있는지 확인하십시오. 예를 들어 엔티티가 com.foo.myservice.things에 살았다면 아래의 구성 주석은 그렇지 않습니다. 집어.
당신은 그것을 풀어서 고칠 수 있습니다 com.foo.myservice (물론 범위를 확장하여 엔티티를 스캔하는 다른 효과를 염두에 두십시오).
@Configuration
@EnableJpaAuditing
@EnableJpaRepositories("com.foo.myservice.repositories")
public class RepositoryConfiguration {
}
답변
나는 같은 문제가 있었고 persistence.xml에 엔티티를 추가하여 해결할 수 있습니다. 이 문제는 엔티티가 지속성 구성에 추가되지 않았기 때문에 발생했습니다. 지속성 파일을 편집하십시오.
<persistence-unit name="MY_PU" transaction-type="RESOURCE_LOCAL">
<provider>`enter code here`
org.hibernate.jpa.HibernatePersistenceProvider
</provider>
<class>mypackage.MyEntity</class>
…
답변
제 경우에는를 빌드 할 때 클래스를 추가해야합니다 SessionFactory
.addAnnotationClass
Configuration configuration.configure();
StandardServiceRegistryBuilder builder = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties());
SessionFactory sessionFactory = configuration
.addAnnotatedClass(MyEntity1.class)
.addAnnotatedClass(MyEntity2.class)
.buildSessionFactory(builder.build());