Jas*_*han 5 java mysql spring spring-boot
我对提交做了一些更改,突然之间,我的 spring 程序似乎无法初始化实体并将它们链接到存储库。当我启动 spring 时,我将其作为我的日志:
2022-07-10 16:39:17.137 INFO 18040 --- [ restartedMain] com.vendify.BackendDbApplication : Starting BackendDbApplication using Java 17.0.2 on DESKTOP-HSDNP64 with PID 18040 (applicaiton started by (my name) in directory)
2022-07-10 16:39:17.140 INFO 18040 --- [ restartedMain] com.vendify.BackendDbApplication : No active profile set, falling back to default profiles: default
2022-07-10 16:39:17.186 INFO 18040 --- [ restartedMain] .e.DevToolsPropertyDefaultsPostProcessor : Devtools property defaults active! Set 'spring.devtools.add-properties' to 'false' to disable
2022-07-10 16:39:17.187 INFO 18040 --- [ restartedMain] .e.DevToolsPropertyDefaultsPostProcessor : For additional web related logging consider setting the 'logging.level.web' property to 'DEBUG'
2022-07-10 16:39:18.193 INFO 18040 --- [ restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Multiple Spring Data modules found, entering strict repository configuration mode!
2022-07-10 16:39:18.194 INFO 18040 --- [ restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JDBC repositories in DEFAULT mode.
2022-07-10 16:39:18.240 INFO 18040 --- [ restartedMain] .RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface com.vendify.Repositories.Auth0TokensCacheRepository. If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table.
2022-07-10 16:39:18.242 INFO 18040 --- [ restartedMain] .RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface com.vendify.Repositories.ItemIndexRepository. If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table.
2022-07-10 16:39:18.244 INFO 18040 --- [ restartedMain] .RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface com.vendify.Repositories.ItemsRepository. If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table.
2022-07-10 16:39:18.246 INFO 18040 --- [ restartedMain] .RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface com.vendify.Repositories.LoggingRepository. If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table.
2022-07-10 16:39:18.248 INFO 18040 --- [ restartedMain] .RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface com.vendify.Repositories.SerialsRepository. If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table.
2022-07-10 16:39:18.251 INFO 18040 --- [ restartedMain] .RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface com.vendify.Repositories.TransactionsRepository. If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table.
2022-07-10 16:39:18.253 INFO 18040 --- [ restartedMain] .RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface com.vendify.Repositories.ValidUsersRepository. If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table.
2022-07-10 16:39:18.255 INFO 18040 --- [ restartedMain] .RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface com.vendify.Repositories.VendorsRepository. If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table.
2022-07-10 16:39:18.256 INFO 18040 --- [ restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 58 ms. Found 0 JDBC repository interfaces.
2022-07-10 16:39:18.266 INFO 18040 --- [ restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Multiple Spring Data modules found, entering strict repository configuration mode!
2022-07-10 16:39:18.267 INFO 18040 --- [ restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JPA repositories in DEFAULT mode.
2022-07-10 16:39:18.329 INFO 18040 --- [ restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 51 ms. Found 8 JPA repository interfaces.
2022-07-10 16:39:19.172 INFO 18040 --- [ restartedMain] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8081 (http)
2022-07-10 16:39:19.184 INFO 18040 --- [ restartedMain] o.apache.catalina.core.StandardService : Starting service [Tomcat]
2022-07-10 16:39:19.184 INFO 18040 --- [ restartedMain] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.52]
2022-07-10 16:39:19.275 INFO 18040 --- [ restartedMain] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2022-07-10 16:39:19.276 INFO 18040 --- [ restartedMain] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 2089 ms
2022-07-10 16:39:19.754 INFO 18040 --- [ restartedMain] o.f.c.internal.license.VersionPrinter : Flyway Community Edition 7.7.3 by Redgate
2022-07-10 16:39:19.760 INFO 18040 --- [ restartedMain] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting...
2022-07-10 16:39:20.192 INFO 18040 --- [ restartedMain] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed.
2022-07-10 16:39:20.240 INFO 18040 --- [ restartedMain] o.f.c.i.database.base.DatabaseType : Database: jdbc:mysql://localhost:3306/vendify (MySQL 8.0)
2022-07-10 16:39:20.276 INFO 18040 --- [ restartedMain] o.f.core.internal.command.DbValidate : Successfully validated 1 migration (execution time 00:00.015s)
2022-07-10 16:39:20.284 INFO 18040 --- [ restartedMain] o.f.core.internal.command.DbMigrate : Current version of schema `vendify`: 1
2022-07-10 16:39:20.285 INFO 18040 --- [ restartedMain] o.f.core.internal.command.DbMigrate : Schema `vendify` is up to date. No migration necessary.
2022-07-10 16:39:20.502 INFO 18040 --- [ restartedMain] o.hibernate.jpa.internal.util.LogHelper : HHH000204: Processing PersistenceUnitInfo [name: default]
2022-07-10 16:39:20.564 INFO 18040 --- [ restartedMain] org.hibernate.Version : HHH000412: Hibernate ORM core version 5.4.32.Final
2022-07-10 16:39:20.705 INFO 18040 --- [ restartedMain] o.hibernate.annotations.common.Version : HCANN000001: Hibernate Commons Annotations {5.1.2.Final}
2022-07-10 16:39:20.866 INFO 18040 --- [ restartedMain] org.hibernate.dialect.Dialect : HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect
2022-07-10 16:39:21.555 INFO 18040 --- [ restartedMain] o.h.e.t.j.p.i.JtaPlatformInitiator : HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform]
2022-07-10 16:39:21.563 INFO 18040 --- [ restartedMain] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default'
2022-07-10 16:39:22.307 WARN 18040 --- [ restartedMain] JpaBaseConfiguration$JpaWebConfiguration : spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning
2022-07-10 16:39:22.779 INFO 18040 --- [ restartedMain] o.s.s.web.DefaultSecurityFilterChain : Will secure any request with [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@6c38469b, org.springframework.security.web.context.SecurityContextPersistenceFilter@52d983cb, org.springframework.security.web.header.HeaderWriterFilter@67a31d2b, org.springframework.security.web.authentication.logout.LogoutFilter@2c8dea82, org.springframework.security.web.authentication.www.BasicAuthenticationFilter@631bab6, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@1f96917a, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@64458fc6, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@46d290b3, org.springframework.security.web.session.SessionManagementFilter@1312d3d0, org.springframework.security.web.access.ExceptionTranslationFilter@37e85798, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@2cc95e93]
2022-07-10 16:39:23.986 INFO 18040 --- [ restartedMain] o.s.b.d.a.OptionalLiveReloadServer : LiveReload server is running on port 35729
2022-07-10 16:39:23.995 INFO 18040 --- [ restartedMain] o.s.b.a.e.web.EndpointLinksResolver : Exposing 14 endpoint(s) beneath base path '/****{hidden for security}'
2022-07-10 16:39:24.057 INFO 18040 --- [ restartedMain] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8081 (http) with context path ''
2022-07-10 16:39:24.073 INFO 18040 --- [ restartedMain] com.vendify.BackendDbApplication : Started BackendDbApplication in 7.398 seconds (JVM running for 7.938)
Run Code Online (Sandbox Code Playgroud)
主要是我关心的错误在日志中是这样的:
2022-07-10 16:39:18.240 INFO 18040 --- [ restartedMain] .RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface com.vendify.Repositories.Auth0TokensCacheRepository. If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table.
Run Code Online (Sandbox Code Playgroud)
这是我如何编码实体类的一个例子(所有的都是这样的,我已经有一段时间没有碰它们了。它们似乎以前工作过......)
package com.vendify.Entities;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import org.springframework.lang.NonNull;
import lombok.Getter;
import lombok.Setter;
@Entity
@Table(name = "Logging")
@Getter
@Setter
public class LoggingEntity {
//specific code removed for security
}
Run Code Online (Sandbox Code Playgroud)
具有类似的存储库类,如下所示:
package com.vendify.Repositories;
import java.util.Date;
import java.util.List;
import org.springframework.data.repository.CrudRepository;
import org.springframework.data.rest.core.annotation.RepositoryRestResource;
import com.vendify.Entities.Auth0TokensCacheEntity;
@RepositoryRestResource(exported = false)
public interface Auth0TokensCacheRepository extends CrudRepository<Auth0TokensCacheEntity, String> {
}
Run Code Online (Sandbox Code Playgroud)
Spring 似乎能够连接到数据库,并且在很长一段时间内,它没有任何问题...我添加了一些包,它与其他一些东西混在一起,似乎就是在它崩溃的时候,所以对于一些人来说上下文,这是我的程序的一般布局:
帮助将不胜感激!非常感谢您,祝您的项目开发人员好运!
更新:我尝试了用 JPARepository 替换 CRUDRepository 的解决方案以及 Dhana 建议的其他注释(谢谢:)),并且 spring 找到了所有这些存储库。但是,我的所有 API 端点现在都没有响应,即使是执行器端点也是如此。另外,当添加 @ComponentScan(basePackageClasses = {mycontrollerclasses}) 时,我收到一个应用程序错误,即 spring 找不到服务类。请注意,到目前为止,当我调用端点时,该函数仍然可以正常运行(它可以正确地 system.out.print 结果,但由于某种原因,无法将其正确返回到网络服务器进行显示。
Description:
Field auth0TokensCacheService in com.vendify.Controllers.{ControllerClass} required a bean of type 'com.vendify.Services.{ControllerClass}' that could not be found.
The injection point has the following annotations:
- @org.springframework.beans.factory.annotation.Autowired(required=true)
Action:
Consider defining a bean of type 'com.vendify.Services.{ControllerClass}' in your configuration.
Run Code Online (Sandbox Code Playgroud)
我的服务类如下所示:
@Service
public class HiddenService {
@Autowired
HiddenRepository hiddenRepository;
//methods in here
}
Run Code Online (Sandbox Code Playgroud)
我的控制器看起来像这样:
@RestController
public class HiddenController {
@GetMapping("/endpointURL")
//method here
}
Run Code Online (Sandbox Code Playgroud)
谢谢!
Dha*_*rni 10
让我解释一下,根据我的理解,当您在项目中拥有多个 spring-data 模块以及 Spring Data JDBC 时,如果您尝试通过从通用扩展接口来为未使用特定持久性注释进行注释的特定实体创建接口模块。这肯定行不通,因为 spring 基本上不知道你的实体与哪个数据存储相关联。因此,尝试将其扩展到特定存储库,例如,如果您使用 MySQL,请使用 JpaRepository 而不是 CrudRepository,无论如何,在内部层次结构的某一点,它们将相互链接,但建议仍然将您的实体与特定存储库相关联
最后,确保将这些添加到各自的文件中:
@Repository 位于您的自定义存储库中
将其添加到您的 application.properties
spring.data.jdbc.repositories.enabled=false
希望对你有帮助!:)
| 归档时间: |
|
| 查看次数: |
19503 次 |
| 最近记录: |