首页 > 解决方案 > hibernate: mappedBy 引用 oneToMany 关系中的未知目标实体属性

问题描述

我的代码中有以下结构:

用户有一个 TvShow 的收藏列表,一个 TvShow 有一个季节列表,一个季节有一个剧集列表。

用户

@Entity
@Table(name = "users")
public class User {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "user_id", updatable = false, nullable = false)
private int id;

@OneToMany(mappedBy = "tvshows", fetch = FetchType.EAGER)
private List<TvShow> favourites;
/// everything else removed for clarity
}

电视节目

@Entity
@Table(name = "tvshows")
public class TvShow {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "tvShow_id", updatable = false, nullable = false)
private int id;

@OneToMany(mappedBy = "tvshows", fetch = FetchType.EAGER)
private List<Season> seasons;
/// everything else removed for clarity
}

季节

@Entity
@Table(name = "seasons")
public class Season{

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "season_id", updatable = false, nullable = false)
private int id;

@OneToMany(mappedBy = "seasons", fetch = FetchType.EAGER)
private List<Episode> episodes;
/// everything else removed for clarity
}

该应用程序不会以以下错误消息启动:

mappedBy reference an unknown target entity property: com.gcimpoies.project.model.Season.seasons in com.gcimpoies.project.model.TvShow.seasons

还,

Invocation of init method failed; nested exception is org.hibernate.AnnotationException: mappedBy reference an unknown target entity property: com.gcimpoies.project.model.Season.seasons in com.gcimpoies.project.model.TvShow.seasons

我很确定我只是缺少正确的属性名称(mappedBy 的参数),但我不知道我做错了什么。

提前致谢!

标签: javahibernatehibernate-mapping

解决方案


您必须输入的名称是您mappedBy引用的类的 id。

代替:

@OneToMany(mappedBy = "tvshows", fetch = FetchType.EAGER)

尝试:

@OneToMany(mappedBy = "id", fetch = FetchType.EAGER)

您也必须对其余映射执行此操作。


推荐阅读