首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >@OneToMany字段错误地包含在JPA查询中

@OneToMany字段错误地包含在JPA查询中
EN

Stack Overflow用户
提问于 2022-07-10 13:48:37
回答 1查看 44关注 0票数 0

我有一个小项目需要修改Spring,其中有两个实体具有一对多的关联:1 Restaurant -> N Dishes。为此,我有以下PostgreSQL模式:

代码语言:javascript
运行
复制
create table if not exists restaurants (
    restaurant_id uuid primary key,
    name varchar(512) not null,
    description varchar(1024) not null,
    address varchar(512) not null,
    photo_url varchar(1024)
);

create table if not exists dishes (
    dish_id uuid primary key,
    name varchar(512) not null,
    description varchar(1024),
    photo_url varchar(1024),
    restaurant_id uuid references restaurants(restaurant_id) not null,
    price int not null check (price > 0)
);

与下列联合行动机构合作:

代码语言:javascript
运行
复制
@Entity
@Table(name = "restaurants")
class Restaurants(
    @Id
    var restaurantId: UUID,
    var name: String,
    var description: String,
    var photoUrl: String?,
) {
    @OneToMany(mappedBy = "restaurant")
    @JoinColumn(name = "restaurant_id", nullable = false)
    var dishes: MutableList<Dishes> = mutableListOf()
}
代码语言:javascript
运行
复制
@Entity
@Table(name = "dishes")
class Dishes(
    @Id
    var dishId: UUID,
    var name: String,
    var description: String,
    var photoUrl: String?,
    var price: Int,
    @ManyToOne(optional = false)
    @JoinColumn(name = "restaurant_id", nullable = false)
    var restaurant: Restaurants
)

我将RestaurantsRepository定义为:

代码语言:javascript
运行
复制
interface RestaurantsRepository: R2dbcRepository<Restaurants, UUID> {
    fun findByRestaurantId(restaurantId: UUID): Mono<Restaurants>
}

我遇到的问题是,当我调用findByRestaurantId时,我有以下例外:

代码语言:javascript
运行
复制
org.springframework.r2dbc.BadSqlGrammarException: executeMany; bad SQL grammar [SELECT restaurants.restaurant_id, restaurants.name, restaurants.description, restaurants.photo_url, restaurants.dishes FROM restaurants WHERE restaurants.restaurant_id = $1]; nested exception is io.r2dbc.postgresql.ExceptionFactory$PostgresqlBadGrammarException: [42703] column restaurants.dishes does not exist
    at org.springframework.r2dbc.connection.ConnectionFactoryUtils.convertR2dbcException(ConnectionFactoryUtils.java:235) ~[spring-r2dbc-5.3.21.jar:5.3.21]
    Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException: 

为什么@OneToMany字段包含在SQL查询中?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-10 14:29:22

您正在尝试将Spring R2DBC (R2dbcRepository)与JPA注释结合使用。这是行不通的:这是两种不同的技术。R2DBC不支持@ManyToOne@JoinColumn,因此只忽略注释。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72928978

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档