错误创建存储库 - Springboot带有H2时而不是托管类型
即使引入实体扫描,我也会收到上述错误。我将在下面添加我的代码。
MAIN类
package com.idealo.demoapp1;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.domain.EntityScan;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.data.jpa.repository.config.EnableJpaAuditing;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
@SpringBootApplication
//@EnableJpaAuditing
@EnableJpaRepositories("com.idealo.demoapp1.repository")
@EntityScan("com.idealo.demoapp1.entity")
@ComponentScan("com.*")
public class DemoApp1Application {
public static void main(String[] args) {
SpringApplication.run(DemoApp1Application.class, args);
}
}
控制器
package com.idealo.demoapp1.controller;
import com.idealo.demoapp1.entity.Item;
//import org.glassfish.jaxb.runtime.v2.schemagen.xmlschema.List;
import com.idealo.demoapp1.service.ItemService;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.List;
@Controller
@RequestMapping(path = "/item")
public class ItemController {
// @Autowired
ItemService itemService;
@GetMapping
@ResponseBody
public List<Item> getAllItems() {
return itemService.getAllItems();
}
}
服务
package com.idealo.demoapp1.service;
import com.idealo.demoapp1.entity.Item;
import com.idealo.demoapp1.repository.ItemRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
@RequiredArgsConstructor
@Service
@Transactional
public class ItemService {
// @Autowired
ItemRepository itemRepository;
public List<Item> getAllItems() {
return itemRepository.findAll();
}
}
存储库
package com.idealo.demoapp1.repository;
import com.idealo.demoapp1.entity.Item;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import java.util.UUID;
@Repository
public interface ItemRepository extends JpaRepository<Item, UUID> {
}
实体
package com.idealo.demoapp1.entity;
import com.sun.istack.NotNull;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.annotation.LastModifiedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import javax.persistence.*;
import java.util.UUID;
@Entity
@Table(name = "item")
@NoArgsConstructor
@AllArgsConstructor
@Data
@Builder
@EntityListeners(AuditingEntityListener.class)
public class Item {
@Id
private UUID id;
@Column
private String product_name;
@Column
private String producer;
@Column
private String product_desc;
@Column
private String product_picture;
@Column
private String current_price;
@Column
private String best_price;
@Column
private String best_price_date;
@Column
private String product_rating;
}
H2配置在Application.properties
server.servlet.context-path=/${spring.application.name}
spring.h2.console.enabled=true
spring.h2.console.path=/h2-console
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.url=jdbc:h2:mem:idealo;TRACE_LEVEL_FILE=4
spring.datasource.username=idealo
spring.datasource.password=123
spring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation=true
spring.jpa.hibernate.ddl-auto=create-drop
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
spring.jpa.open-in-view=true
spring.application.name=idealo-backend
logging.level.org.hibernate.SQL=DEBUG
错误
Error creating bean with name 'itemRepository' defined in com.idealo.demoapp1.repository.ItemRepository defined in @EnableJpaRepositories declared on DemoApp1Application: Not a managed type: class com.idealo.demoapp1.entity.Item
文件夹结构
i.sstatic.net/w43ft.png“ alt =”在此处输入图像说明”>
pom
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.0.0-SNAPSHOT</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.idealo</groupId>
<artifactId>demo-app1</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<name>demo-app1</name>
<description>Demo project with Spring Boot for idealo</description>
<properties>
<java.version>1.8</java.version>
<!-- <maven.compiler.release>8</maven.compiler.release>-->
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.persistence/javax.persistence-api -->
<dependency>
<groupId>javax.persistence</groupId>
<artifactId>javax.persistence-api</artifactId>
<version>2.2</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.24</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>com.cedarsoftware</groupId>
<artifactId>java-util</artifactId>
<version>1.8.0</version>
</dependency>
<!-- <dependency>-->
<!-- <groupId>org.springframework.boot</groupId>-->
<!-- <artifactId>spring-boot-starter-jdbc</artifactId>-->
<!-- </dependency>-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/milestone</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
<repository>
<id>spring-snapshots</id>
<name>Spring Snapshots</name>
<url>https://repo.spring.io/snapshot</url>
<releases>
<enabled>false</enabled>
</releases>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/milestone</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</pluginRepository>
<pluginRepository>
<id>spring-snapshots</id>
<name>Spring Snapshots</name>
<url>https://repo.spring.io/snapshot</url>
<releases>
<enabled>false</enabled>
</releases>
</pluginRepository>
</pluginRepositories>
</project>
我经历了类似的问题,并尝试了解决方案而没有成功。 我非常感谢有人可以帮助我找到这个问题的根本原因
I get the above error even after introducing the entity scan. I will add my code below.
main class
package com.idealo.demoapp1;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.domain.EntityScan;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.data.jpa.repository.config.EnableJpaAuditing;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
@SpringBootApplication
//@EnableJpaAuditing
@EnableJpaRepositories("com.idealo.demoapp1.repository")
@EntityScan("com.idealo.demoapp1.entity")
@ComponentScan("com.*")
public class DemoApp1Application {
public static void main(String[] args) {
SpringApplication.run(DemoApp1Application.class, args);
}
}
controller
package com.idealo.demoapp1.controller;
import com.idealo.demoapp1.entity.Item;
//import org.glassfish.jaxb.runtime.v2.schemagen.xmlschema.List;
import com.idealo.demoapp1.service.ItemService;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.List;
@Controller
@RequestMapping(path = "/item")
public class ItemController {
// @Autowired
ItemService itemService;
@GetMapping
@ResponseBody
public List<Item> getAllItems() {
return itemService.getAllItems();
}
}
service
package com.idealo.demoapp1.service;
import com.idealo.demoapp1.entity.Item;
import com.idealo.demoapp1.repository.ItemRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
@RequiredArgsConstructor
@Service
@Transactional
public class ItemService {
// @Autowired
ItemRepository itemRepository;
public List<Item> getAllItems() {
return itemRepository.findAll();
}
}
repository
package com.idealo.demoapp1.repository;
import com.idealo.demoapp1.entity.Item;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import java.util.UUID;
@Repository
public interface ItemRepository extends JpaRepository<Item, UUID> {
}
entity
package com.idealo.demoapp1.entity;
import com.sun.istack.NotNull;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.annotation.LastModifiedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import javax.persistence.*;
import java.util.UUID;
@Entity
@Table(name = "item")
@NoArgsConstructor
@AllArgsConstructor
@Data
@Builder
@EntityListeners(AuditingEntityListener.class)
public class Item {
@Id
private UUID id;
@Column
private String product_name;
@Column
private String producer;
@Column
private String product_desc;
@Column
private String product_picture;
@Column
private String current_price;
@Column
private String best_price;
@Column
private String best_price_date;
@Column
private String product_rating;
}
h2 configs in application.properties
server.servlet.context-path=/${spring.application.name}
spring.h2.console.enabled=true
spring.h2.console.path=/h2-console
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.url=jdbc:h2:mem:idealo;TRACE_LEVEL_FILE=4
spring.datasource.username=idealo
spring.datasource.password=123
spring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation=true
spring.jpa.hibernate.ddl-auto=create-drop
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
spring.jpa.open-in-view=true
spring.application.name=idealo-backend
logging.level.org.hibernate.SQL=DEBUG
error
Error creating bean with name 'itemRepository' defined in com.idealo.demoapp1.repository.ItemRepository defined in @EnableJpaRepositories declared on DemoApp1Application: Not a managed type: class com.idealo.demoapp1.entity.Item
Folder structure
pom
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.0.0-SNAPSHOT</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.idealo</groupId>
<artifactId>demo-app1</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<name>demo-app1</name>
<description>Demo project with Spring Boot for idealo</description>
<properties>
<java.version>1.8</java.version>
<!-- <maven.compiler.release>8</maven.compiler.release>-->
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.persistence/javax.persistence-api -->
<dependency>
<groupId>javax.persistence</groupId>
<artifactId>javax.persistence-api</artifactId>
<version>2.2</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.24</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>com.cedarsoftware</groupId>
<artifactId>java-util</artifactId>
<version>1.8.0</version>
</dependency>
<!-- <dependency>-->
<!-- <groupId>org.springframework.boot</groupId>-->
<!-- <artifactId>spring-boot-starter-jdbc</artifactId>-->
<!-- </dependency>-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/milestone</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
<repository>
<id>spring-snapshots</id>
<name>Spring Snapshots</name>
<url>https://repo.spring.io/snapshot</url>
<releases>
<enabled>false</enabled>
</releases>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/milestone</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</pluginRepository>
<pluginRepository>
<id>spring-snapshots</id>
<name>Spring Snapshots</name>
<url>https://repo.spring.io/snapshot</url>
<releases>
<enabled>false</enabled>
</releases>
</pluginRepository>
</pluginRepositories>
</project>
I have gone through similar questions and have tried the solutions without success.
I greatly appreciate if someone can assist me in finding the root cause for this issue
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
Spring-Boot 3.0.0-Snapshot是快照版本,而不是GA(已发布)版本。如果您使用下面的任何最新版本,则应使用
spring-boot 3.0.0-SNAPSHOT is a snapshot version and not GA(released) version. If you use any latest release version like below, it should work