hibernate: mappedBy ссылается на неизвестное целевое свойство объекта в отношении oneToMany - PullRequest
0 голосов
/ 30 мая 2018

У меня есть следующая структура в моем коде:

У пользователя есть список избранного TvShows, у 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
}

TvShow

@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), но я понятия не имею, что я делаю неправильно.

Спасибо взаранее!

1 Ответ

0 голосов
/ 30 мая 2018

Имя, которое вы должны поместить в mappedBy, является идентификатором класса, на который вы ссылаетесь.

Вместо:

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

Попробуйте:

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

Вы должны будете сделать это и для остальных отображений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...