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.
J'ai eu le suivant
import org.springframework.data.annotation.Id;
Naturellement, cela devrait être:
import javax.persistence.Id;
Merci à @JB Nizet
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;
}
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.