web-dev-qa-db-fra.com

org.hibernate.AnnotationException: aucun identifiant spécifié pour l'entité - même s'il était

J'ai la configuration suivante:

<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>

J'ai ma classe Geoname dans com.example.domain:

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

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

cependant, lors de l'exécution, j'obtiens l'exception suivante:

Causé par: org.hibernate.AnnotationException: aucun identifiant spécifié pour l'entité: com.example.domain.Geoname at org.hibernate.cfg.InheritanceState.determineDefaultAccessType (InheritanceState.Java:277) à org.hibernate.cfg.InheritanceState.getElementsToProcess (InheritanceState.Java:224) à org.hibernate.cfg.AnnotationBinder.bindClass (AnnotationBinder.Java:664) à org.hibernate.cfg.Configuration $ MetadataSourceQueue.processAnnotatedClassesQueue (Configuration.Java:3449) à org.hibernate.cfg.Configuration $ MetadataSourceQueue.processMetadata (Configuration.Java:3403) à org.hibernate.cfg.Configuration.secondPassCompile (Configuration.Java:1330) à org.hibernate.cfg.Configuration.buildSessionFactory (Configuration.Java:1730)

Des idées pourquoi?

note de côté: Je combine les deux mongodb et hibernate/mysql sur ce projet.

26
checklist

J'ai eu le suivant 

import org.springframework.data.annotation.Id;

Naturellement, cela devrait être:

import javax.persistence.Id;

Merci à @JB Nizet

108
checklist

J'ai fait face à la même erreur. Je l'ai résolue et j'ai compris que je n'avais pas mis d'annotations @ Id dans le champ id de ma classe d'entité.

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

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

Vous pourriez avoir des champs supplémentaires dans la classe Entity. Comme les champs qui ne sont pas annotés ou constructeurs. Veuillez les supprimer et essayer. Cela a fonctionné pour moi.

Bonne codage.

0
Bandham Manikanta