Список JPA ManyToMany пуст - PullRequest
       1

Список JPA ManyToMany пуст

0 голосов
/ 07 декабря 2018

ПРОБЛЕМА: Мой список сущностей пуст после привязки к таблице Postgres.

ИССЛЕДОВАНИЯ: JavaEE7, Java8, JPA2.1.OneToMany для этой сущности и аналогичные связанные поля ManyToMany в других сущностях отлично работают с той же базой данных.

Таблица DDL:

create table clean.report_type_to_indicator_type(
indicator_type_id integer not null
    constraint report_type_to_indicator_type_indicator_type_id_fk
        references indicator_type,
report_type_id integer not null
    constraint report_type_to_indicator_type_report_type_id_fk
        references report_type,
constraint report_type_to_indicator_type_pk
    primary key (indicator_type_id, report_type_id)
);

create unique index 
report_type_to_indicator_type_indicator_type_id_report_type_id_
on clean.report_type_to_indicator_type (indicator_type_id, 
report_type_id);

Сущность :

@Entity
@Table(schema = "clean")
@JsonIgnoreProperties(ignoreUnknown = true)
public class IndicatorType {

  // Fields:

  @Id @GeneratedValue private int id;
  private String name;

  @ManyToOne private Unit unit;

  @ManyToOne private PeriodType periodType;

  @ManyToOne private RegionType regionType;

  @ManyToMany
  @JoinTable(
      schema = "clean",
      name = "report_type_to_indicator_type",
      joinColumns = @JoinColumn(name = "indicator_type_id"),
      inverseJoinColumns = @JoinColumn(name = "report_type_id"))
  private List<RegionType> reportTypes;

  // Getters and setters:
}

Я создаю сущность в REST-сервисе вроде:

IndicatorType indicatorType = comparisonDao.getIndicatorTypeById(1);

И получаю enter image description here

ВОПРОС: Любые идеичто не хватает, чтобы заставить его работать.Что еще требуется от кода?

Ответы [ 2 ]

0 голосов
/ 10 декабря 2018

Как и ожидалось, это была простая опечатка, которую также пропустили 34+ зрителей.Я попытался добавить параметр к аннотации:

@ManyToMany(mappedBy = "")

и попросил Intellij предложить в двойных кавычках.Удивительно, но он предложил поля от другого объекта - RegionType.Ошибка была в списке типа:

private List<RegionType> reportTypes;
-> private List<ReportType> reportTypes;
0 голосов
/ 07 декабря 2018

Каскадное отсутствует.Ниже приведен пример:

@ManyToMany(
        cascade = {CascadeType.ALL},
        fetch = FetchType.LAZY
    )
    @JoinTable(
        name = "report_type_to_indicator_type",
        joinColumns = {@JoinColumn(name = "indicator_type_id")},
        inverseJoinColumns = {@JoinColumn(name = "report_type_id")}
    )
    private List<RegionType> reportTypes;
...