Java 休眠返回空对象

Java 休眠返回空对象,java,spring,hibernate,jpa,Java,Spring,Hibernate,Jpa,我有3张表:电影、电影类别和类别 我创建实体类 @Entity @Table(name = "category") @Data public class Category { @Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(nullable = false, unique = true) private Integer categoryId; private String name;

我有3张表:电影、电影类别和类别 我创建实体类

@Entity
@Table(name = "category")
@Data
public class Category {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(nullable = false, unique = true)
    private Integer categoryId;
    private String name;
}

public class Movie {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(nullable = false, unique = true)
    private Integer movieId;
    ........

    @OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
    private List<MovieCategory> movieCategories;
}

@Entity
@Table(name="movie_category")
@Data
public class MovieCategory {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(nullable = false, unique = true)
    private Integer movieCategoryId;

    @ManyToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
    @JoinColumn(name = "movieId", referencedColumnName = "movieId")
    private Movie movie;

    @ManyToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
    @JoinColumn(name = "categoryId", referencedColumnName = "categoryId")
    private Category category;

}

一部电影有许多电影类别。当我为电影实体使用JpaRepository接口和findAll时,Hibernate将电影类别作为空数组返回。我使用双向透视。使用单向是否可以返回具有列表类别的电影

不要忘了在许多注释上使用mappedBy属性。在您的情况下,这是必要的,因为您正在使用双向关联,并且每个双向关联都有一个所有者端和一个反向端

在此之前,您可能需要定义拥有方和反向方。JPA使用拥有方来决定两个实体之间是否存在关联

拥有方定义了如何使用JoinColumn、JoinTable等注释映射关联。它没有任何mappedBy属性


反向端使用mappedBy属性映射属性在所属端定义的属性。

尝试将以下代码放入电影类中

@JoinTablename=MovieCategory,joinColumns=@JoinColumnname=movieId,inverseJoinColumns=@JoinColumnname=categoryId


私人名单电影类别

在movie.java@OneToManyfetch=FetchType.EAGER、cascade=CascadeType.ALL、mappedBy=movie private List movieCategories的关系中添加mappedBy=movie;