代码之家  ›  专栏  ›  技术社区  ›  Zon

JPA多人列表为空

  •  0
  • Zon  · 技术社区  · 7 年前

    问题:绑定到Postgres表后,我的实体列表为空。

    表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 回复  |  直到 7 年前
        1
  •  1
  •   K.Nicholas    7 年前

    层叠

    @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;
    
        2
  •  0
  •   Zon    7 年前

    正如所料,这是一个简单的打字错误,34+观众也错过了。我已尝试将参数添加到注释:

    @ManyToMany(mappedBy = "")
    

    并用双引号向Intellij征求建议。令人惊讶的是,它建议使用来自另一个实体RegionType的字段。错误出现在列表类型中:

    private List<RegionType> reportTypes;
    -> private List<ReportType> reportTypes;