java - 休眠返回空对象
问题描述
我有 3 个表:movie、movie_category 和 category 我创建实体类
@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;
}
一部电影有很多film_categories。当我为电影实体使用 JpaRepository 接口和 findAll() 时,hiberante 将movieCategories 作为空数组返回。我使用双向透视。使用单向可以返回带有列表类别的电影吗?
解决方案
不要忘记在 ToMany 注释上使用 mappedBy 属性。在您的情况下是必要的,因为您正在使用双向关联,并且每个双向关联都有所有者方和反向方。
在此之前,您可能必须定义拥有方和反方。JPA 使用拥有方来决定两个实体之间是否存在关联。
拥有方是定义关联如何映射的一方(使用 JoinColumn、JoinTable 等注释)。它没有任何 mappedBy 属性。
反面使用 mappedBy 属性来映射该属性在拥有方中定义的属性。
推荐阅读
- kubernetes - Kubernetes - ingress-nginx tcp 服务如何暴露?
- r - 使用 R 在数据表中包含回归系数、std.errors 和 Pvalues
- python - 将python脚本作为exe运行
- r - 如何将 R 中的 JSON 文件转换为数据框?
- sql-server - SSIS包读取多个文件并根据文件名加载到多个表中
- ocr - 无法使用 pytesseract 读取黑色背景上的白色文本
- forms - 表单处理的 nextjs 错误
- php - PHP Symfony:未定义类型'Symfony\Component\OptionsResolver\OptionsResolver'
- sql - T-SQL如何按多个条件过滤但优先返回什么?
- assembly - emu8086寄存器中如何存储一个负值?