我有spring boot项目(版本< code>2.4.6),带有spring数据依赖项(< code > spring-boot-starter-data-JPA )和postgreSQL驱动程序。
在项目中,我们使用Hibernate和数据存储库,通过以下方式配置:
@EnableSpringDataCommons(basePackages = ["..."]) // path to folder with repositories
@EnableJpaAuditing(auditorAwareRef = "auditorAware")
@EnableTransactionManagement
@Configuration
class PersistenceConfig
我还想加入反应性R2DBC。我的计划是在一个特定的地方使用它,在那里我们与其他系统集成,这样的通信通过反应式数据流进行。根据它,我需要主动更新数据库中的一些状态。这就是为什么我添加了下一个依赖项:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-r2dbc</artifactId>
<version>2.4.6</version>
</dependency>
dependency>
<groupId>io.r2dbc</groupId>
<artifactId>r2dbc-postgresql</artifactId>
<scope>runtime</scope>
</dependency>
而且,下一个属性配置:
spring:
name: configuration
url: jdbc:postgresql://${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DBNAME}
username: ${POSTGRES_USERNAME}
password: ${POSTGRES_PASSWORD}
driverClassName: org.postgresql.Driver
hikari:
maximum-pool-size: 2
jpa:
database: POSTGRESQL
database-platform: org.hibernate.dialect.PostgreSQLDialect
generate-ddl: false
open-in-view: false
properties:
javax:
persistence:
validation:
mode: auto
hibernate:
temp:
use_jdbc_metadata_defaults: false
jdbc:
time_zone: UTC
lob.non_contextual_creation: true
hibernate:
ddl-auto: none
r2dbc:
url: r2dbc:postgresql://${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DBNAME}
username: ${POSTGRES_USERNAME}
password: ${POSTGRES_PASSWORD}
liquibase.change-log: classpath:/db/changelog-master.xml
最后,我有这样的数据层逻辑服务:
@Service
class MyDataReactiveService(
val operator: TransactionalOperator,
val template: R2dbcEntityTemplate
) {
fun updateObjectStatus(state: String, objectId: UUID): Mono<Int> =
template
.update(ObjectEntity::class.java)
.matching(query(Criteria.where("id").`is`(objectId)))
.apply(update("state", state))
.`as` { operator.transactional(it) }
}
其中< code>ObjectEntity -常规spring数据实体。但是,不幸的是,我在应用程序启动时出现了下一个错误(内部测试):
Field objectRepository in com.slandshow.TestManager required a bean named 'entityManagerFactory' 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 named 'entityManagerFactory' in your configuration.
<code>TestManager</code>-带有注入bean的测试包装器:
@Service
class TestManager {
@Autowired
lateinit var objectRepository: ObjectRepository
...
}
和ObjectRepostory
:
interface ObjectRepository : JpaRepository<ObjectEntity> {
...
}
据我所知,这些问题与r2dbc和spring数据配置错误有关。但是我该怎么解决呢?
因为您没有发布ObjectRepository
的代码,所以很难说什么是错误的。然而,我不建议在同一数据库的同一个项目中使用JPA
和R2DBCWebClient
进行HTTP
调用,并使用Kotlin
Coroutine)。在我看来,这将是更好的方法。然而,所有这一切都取决于您的应用程序,即在调用后您将触发多少查询等等。
我正在尝试迁移到Spring Data R2DBC,我找不到对Amazon Redshift数据库的支持,如果有支持,有人可以帮助我吗? 下面是spring文档url,它支持的数据库很少,但红移不在列表中。https://spring.io/projects/spring-data-r2dbc
我正在使用DatabaseClient执行sql查询,我不知道如何通过以下方式进行分组:
我创建了一个新示例,并将代码分为客户端和服务器端。 完整的代码可以在这里找到。 服务器端有3个版本。 服务器无Spring Boot应用程序,使用Spring Integration RSocket InboundGateway 服务器引导重用Spring RSocket autconfiguration,并通过serverrsocketmessagehandler创建ServerRSocketC
我试图使用Spring Data连接Elasticsearch 6.1(我使用Spring Boot) 但是提到最新版本只支持5.2。,有没有支持ES 6.1的替代方案? https://github.com/spring-projects/spring-data-elasticsearch/blob/master/README.md
带有Hibernate的Spring数据JPA支持注释和。基于这些,实体类之间的继承映射到DB(单表/联接表https://stackoverflow.com/a/3579462/12053054)。 我找不到任何类似的机制来支持Spring data r2dbc的实体继承。我知道JPA和Hibernate的东西与r2dbc无关,但我认为在Spring data r2dbc存储库中支持继承没有任何
我正在尝试将Spring Security性与LDAP集成。使用spring core版本4.0.5,spring security版本3.2.2和spring ldap版本1.3.2。这是我的安全配置xml