IT

기관.기관.기관.주석예외:엔티티에 대해 지정된 식별자가 없습니다. 엔티티가 지정된 경우에도 마찬가지입니다.

itgroup 2023. 8. 16. 22:10
반응형

기관.기관.기관.주석예외:엔티티에 대해 지정된 식별자가 없습니다. 엔티티가 지정된 경우에도 마찬가지입니다.

구성은 다음과 같습니다.

<bean id="entityManagerFactory"
        class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
        <property name="dataSource" ref="jpaDataSource" />
        <property name="jpaVendorAdapter">
            <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter" />
        </property>
        <property name="jpaProperties">
            <props>
                <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
                <prop key="hibernate.show_sql">true</prop>
            </props>
        </property>
        <property name="packagesToScan">
        <list>
            <value>com.example.domain</value>
            <value>com.example.repositories</value>
        </list>
    </property>
</bean>

com.example.domain에 Geaname 클래스가 있습니다.

@Entity
@Table(name="geonames")
public class Geoname implements Serializable {

    @Id
    @Column(name="geonameid")
    private Long geonameid = null;
}

그러나 실행 시 다음과 같은 예외가 발생합니다.

원인: org.hibernate.주석예외:엔티티 com.example.domain에 대해 지정된 식별자가 없습니다.org.hibernate.cfg의 Gename.org.hibernate.cfg에서 InheritanceState.determinateDefaultAccessType(InheritanceState.java:277)을(를) 확인합니다.org.hibernate.cfg에 있는 InheritanceState.getElementsToProcess(InheritanceState.java:224)입니다.org.hibernate.cfg의 AnnotationBinder.binderClass(AnnotationBinder.java:664)입니다.구성 $MetadataSourceQueue.process주석이 달린 클래스대기열(구성).java:3449)가 org.cfg에 있습니다.구성$MetadataSourceQueue.processMetadata(구성).java:3403), org.cfg에 있습니다.배열.secondPassCompile(구성).java:1330), org.cfg에 있습니다.배열.buildSessionFactory(구성).java:1730)

왜 그런지 아십니까?

측면 참고:저는 이 프로젝트에서 mongodb와 hibernate/mysql을 결합하고 있습니다.

나는 다음을 가지고 있었습니다.

import org.springframework.data.annotation.Id;

당연히 다음과 같아야 합니다.

import javax.persistence.Id;

@JB 니젯 덕분에

저도 같은 오류에 직면했습니다.저는 그것을 해결했고 제 Entity 클래스의 id 필드에 @Id 주석을 넣지 않았다는 것을 알았습니다.

@Entity
@Table(name="geonames")
public class Geoname implements Serializable {

    @Column(name="geonameid")
    private Long geonameid = null;
}

이것을 먹어보세요.

  @Column(name="geonameid",unique=true,nullable=false)

언급URL : https://stackoverflow.com/questions/15320408/org-hibernate-annotationexception-no-identifier-specified-for-entity-even-whe

반응형