gpt4 book ai didi

java - 无法使用 spring-data JPA 获取多对多关联的关系,

转载 作者:行者123 更新时间:2023-11-30 05:27:15 25 4
gpt4 key购买 nike

我一直在使用 Spring 开发一个应用程序。我正在使用 HSQL 数据库,并且我正在使用 spring data JPA 进行 ORM。我有一个用户和一个电影实体,它们与多对多关系相关联。在数据库中,我创建了一个用户、电影和一个 UserMovieRelation 表。

数据库表

    create table users (
user_id varchar(20) not null,
user_Name varchar(255),
description varchar(255),
PRIMARY KEY (user_id)
);

create table movies (
movie_Id varchar(20) not null,
movie_name varchar(255),
description varchar(255),
movie_Type varchar(255),
language varchar(255),
PRIMARY KEY (movie_Id)
);

CREATE TABLE UserMovieRelation(
user_id varchar(20) NOT NULL,
movie_Id varchar(20) NOT NULL,
FOREIGN KEY (user_id) REFERENCES users(user_id),
FOREIGN KEY (movie_Id) REFERENCES movies(movie_Id),
PRIMARY KEY (user_id, movie_Id)
);

用户实体

@Entity
@Table(name = "users")
public class User implements Serializable {
----------
@ManyToMany
@JoinTable(name = "UserMovieRelation",
joinColumns = { @JoinColumn(name = "user_id") },
inverseJoinColumns = { @JoinColumn(name = "movie_Id") })
private Set<Movie> movies;
------
}

电影实体

@Entity
@Table(name="movies")
public class Movie implements Serializable {
--------
@ManyToMany(mappedBy = "movies")
private Set<User> users;
--------
}

我有两个存储库:分别是 UserRepository 和 MovieRepository。

在我的服务类中,我通过 Spring Data JPA 的 findAll 方法返回所有用户。

public List<User> getAllUser() {
return userRepository.findAll();
}

但我无法在 UserMovieRelation 表中获取与用户关联的电影详细信息。尽管该表包含所有数据。

    USER_ID MOVIE_ID 
------- --------
1 1
1 2

输出如下

    [
{
"userId": "1",
"userName": "default",
"userDesc": "default desc",
"movies": []
}
]

如您所见,电影详细信息为空。我做错了什么,如何在输出中获取电影详细信息?

最佳答案

我认为最好的解决方案是更改注释

@ManyToMany(mappedBy = "movies")

@ManyToMany(cascade = { CascadeType.ALL }, fetch = FetchType.EAGER )

这种急切的获取还将查询所有相关产品并填充您的空电影列表。

关于java - 无法使用 spring-data JPA 获取多对多关联的关系,,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58284728/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com