java Hibernate返回空对象
我有三张桌子:电影、电影类别和分类 我创建实体类
@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会将电影类别作为空数组返回。我使用双向透视。使用单向是否可以返回带有列表类别的电影
# 1 楼答案
不要忘记在ToMany注释上使用mappedBy属性。在您的情况下是必要的,因为您使用的是双向关联,每个双向关联都有一个所有者端和一个反向端
在此之前,您可能需要定义拥有方和反向方。JPA使用拥有方来决定两个实体之间是否存在关联
拥有方定义了关联的映射方式(使用JoinColumn、JoinTable等注释)。它没有任何mappedBy属性
反向端使用mappedBy属性映射属性在所属端中定义的属性
# 2 楼答案
试着把下面的代码放到电影课上
@JoinTable(name=“MovieCategory”,joinColumns=@JoinColumn(name=“movieId”),inverseJoinColumns=@JoinColumn(name=“categoryId”))
私人电影目录