Spring Download - "Error creating a bean named" entityManagerFactory "- run

I have seen many questions, but the answers do not satisfy my problem ... I am starting with Spring Boot and I am completely lost.

Error:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaAutoConfiguration.class]: Invocation of init method failed; nested exception is org.hibernate.AnnotationException: No identifier specified for entity: pack.datas.entities.Degree 

/// other lines

 Caused by: org.hibernate.AnnotationException: No identifier specified for entity: pack.datas.entities.Degree 

Point of entry:

 package pack; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.domain.EntityScan; import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @SpringBootApplication(exclude={DataSourceAutoConfiguration.class}) @RestController @EntityScan public class CandidatesRecruitmentApplication { public static void main(String[] args) { SpringApplication.run(CandidatesRecruitmentApplication.class, args); } } 

Classes:

 package pack.datas; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.sql.DataSource; import org.hibernate.jpa.boot.spi.EntityManagerFactoryBuilder; import org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.jpa.repository.config.EnableJpaRepositories; import org.springframework.jdbc.datasource.DriverManagerDataSource; import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean; import org.springframework.stereotype.Component; @Component @Configuration @EnableJpaRepositories public class DatasFactory { private DataSource dataSource; public DatasFactory() { super(); } @Bean @ConfigurationProperties(prefix="spring.datasource") public DataSource dataSource() { if(this.dataSource == null) return this.dataSource = DataSourceBuilder.create().build(); else return this.dataSource; } 

 package pack.datas.entities; import java.io.Serializable; import javax.persistence.Basic; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Table; import org.springframework.data.annotation.Id; @Entity @Table(name = "degree") public class Degree implements Serializable { private static final long serialVersionUID = -8900492704842756948L; @Id @GeneratedValue @Column(name = "pk_id") private Integer id; @Column(name = "degree_i") private Integer degreeId; @Column(name = "degree_s_en") private String degreeEn; @Column(name = "degree_s_fr") private String degreeFr; protected Degree() { } public Degree(Integer id, Integer degreeId, String degreeEn, String degreeFr) { super(); this.id = id; this.degreeId = degreeId; this.degreeEn = degreeEn; this.degreeFr = degreeFr; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public Integer getDegreeId() { return degreeId; } public void setDegreeId(Integer degreeId) { this.degreeId = degreeId; } public String getDegreeEn() { return degreeEn; } public void setDegreeEn(String degreeEn) { this.degreeEn = degreeEn; } public String getDegreeFr() { return degreeFr; } public void setDegreeFr(String degreeFr) { this.degreeFr = degreeFr; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((id == null) ? 0 : id.hashCode()); result = prime * result + ((degreeEn == null) ? 0 : degreeEn.hashCode()); result = prime * result + ((degreeFr == null) ? 0 : degreeFr.hashCode()); result = prime * result + ((degreeId == null) ? 0 : degreeId.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; Degree other = (Degree) obj; if (id == null) { if (other.id != null) return false; } else if (!id.equals(other.id)) return false; if (degreeEn == null) { if (other.degreeEn != null) return false; } else if (!degreeEn.equals(other.degreeEn)) return false; if (degreeFr == null) { if (other.degreeFr != null) return false; } else if (!degreeFr.equals(other.degreeFr)) return false; if (degreeId == null) { if (other.degreeId != null) return false; } else if (!degreeId.equals(other.degreeId)) return false; return true; } @Override public String toString() { return "Degree [ " + degreeId + " - " + degreeEn + "/" + degreeFr + " ]"; } } 

 package pack.datas.controller; import org.springframework.transaction.annotation.Transactional; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.ResponseBody; @Controller public class DaoController { @GetMapping("/") @ResponseBody @Transactional(readOnly = true) String home() { return "<h1>Test Program</h1>"; } } 

Pom.xml file:

 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>pack</groupId> <artifactId>candidates-recruitment</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>candidates-recruitment</name> <description>Demo project for Spring Boot</description> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.4.2.RELEASE</version> <relativePath /> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-sleuth</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- https://mvnrepository.com/artifact/junit/junit --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> </dependency> <dependency> <groupId>org.postgresql</groupId> <artifactId>postgresql</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <!-- https://mvnrepository.com/artifact/org.apache.maven.surefire/surefire-api --> <dependency> <groupId>org.apache.maven.surefire</groupId> <artifactId>surefire-api</artifactId> <version>2.19.1</version> </dependency> <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Camden.SR3</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> </plugin> </plugins> </build> <repositories> <repository> <id>spring-releases</id> <name>Spring Releases</name> <url>https://repo.spring.io/libs-release</url> </repository> <repository> <id>org.jboss.repository.releases</id> <name>JBoss Maven Release Repository</name> <url>https://repository.jboss.org/nexus/content/repositories/releases</url> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>spring-releases</id> <name>Spring Releases</name> <url>https://repo.spring.io/libs-release</url> </pluginRepository> </pluginRepositories> </project> 

.Yml application:

 # DATASOURCE (DataSourceProperties) spring: datasource: url: jdbc:postgresql://localhost:5432/recruitments_db username: postgresql password: postgresql driver-class-name: org.postgresql.Driver # HIBERNATE (HibernateProperties) hibernate: dialect: org.hibernate.dialect.PostgreSQLDialect show_sql: true hbm2ddl.auto: create #SECURITY (SecuriyProperties) security: user: name: TestU password: Test1 

Please, I need your help!

+6
source share
6 answers

It looks like you used the @Id annotation from the wrong package in the Degree class. Change the import from org.springframework.data.annotation.Id to javax.persistence.Id . This should help with the exception you get.

+23
source

using

  javax.persistence.Id 

instead

 org.springframework.data.annotation.Id 

will solve the problem

+1
source

Today I faced the same problem. After some debugging, I found out that I annotated one of the fields in the model class using @GeneratedValue(strategy = GenerationType.AUTO) , but did not add the @Id annotation to this field. Adding one of them allowed.

0
source

The jibern hibernate file was damaged in the local maven repository, it took a damaged library every time after deleting the local maven repository solved the problem

C: \ Users \ user.m2 \ storage

0
source

This error may be due to incorrect database configuration in your project. In your application.yml or application.properties file, you will be given the wrong database name in "spring.datasource.url".

0
source

Found the same problem after importing my project into IntelliJ IDE. It turned out that it was easier than I thought, I went to pom.xml and right-click on "+ Add as a Maven project" . This solved the problem.

-1
source

Source: https://habr.com/ru/post/1262048/


All Articles