使用 spring r2dbc 时找不到 javax.persistence 注释
Posted
技术标签:
【中文标题】使用 spring r2dbc 时找不到 javax.persistence 注释【英文标题】:cannot find javax.persistence annotations when using spring r2dbc 【发布时间】:2019-12-23 23:01:53 【问题描述】:我正在尝试使用 H2
和 Spring Boot
的反应式存储库。
我添加了依赖项
implementation 'org.springframework.boot.experimental:spring-boot-starter-data-r2dbc:0.1.0.M1'
implementation 'org.springframework.boot.experimental:spring-boot-actuator-autoconfigure-r2dbc:0.1.0.M1'
implementation 'io.r2dbc:r2dbc-pool:0.8.0.RELEASE'
我的域看起来像这样
@Entity
@Table(name = "json_comparison")
public class JsonComparisonResult
@Column(name = "comparison_id")
@Id
private String comparisonId;
@Column(name = "left")
private String leftSide;
....
何时依赖
implementation "org.springframework.boot:spring-boot-starter-data-jpa:$springBootVersion"
一切正常。但由于我添加了 r2dbc
依赖项,因此无法找到 javax.persistence
注释的任何依赖项。当我将starter-jpa
与反应式存储库一起使用时,它在启动时失败(常规Reactive Repositories are not supported by JPA
)。
如何解决问题?手动添加javax.persistence
依赖?
有什么问题?
【问题讨论】:
但它说:“JPA 不支持反应式存储库”!?不支持 JPA,因为它不是响应式的 我知道。问题是如何修复它,因为 JPA 提供了很多注释。到目前为止,我决定使用来自 Spring 框架库的data.relational.core.mapping
和 data.annotation.Id
的注释。但是像Enumerated
这样的东西没有替代品
所以你必须等到 JPA 也变得被动......
@SimonMartinelli 我只会玩弄现在存在的东西。当然不是为了生产。
【参考方案1】:
作为解决方案,我决定改用org.springframework.data.relational.core.mapping
注释,例如@Table
、@Column
和org.springframework.data.annotation @Id
。
import org.springframework.data.annotation.Id;
import org.springframework.data.relational.core.mapping.Column;
import org.springframework.data.relational.core.mapping.Table;
此外,我必须通过 SQL 脚本手动创建表。
【讨论】:
我也面临同样的问题。我们如何解决 Entity、JoinColumn、ManyToOne 等类的问题?我们应该使用哪个依赖项?以上是关于使用 spring r2dbc 时找不到 javax.persistence 注释的主要内容,如果未能解决你的问题,请参考以下文章
带有 MySQL 的 Spring Boot R2DBC - 异常:找不到表
Spring data r2dbc:与 mysql 连接时出现问题 - 找不到“r2dbcEntityTemplate”