Как исправить ошибку «Один и тот же столбец добавляется более одного раза с разными значениями для isInsertable» в Hibernate Spring Boot - PullRequest
0 голосов
/ 30 мая 2019

У меня есть приложение весенней загрузки, которое было в весенней загрузке 1.2.Я сейчас обновляю его до весенней загрузки 2.1.x.Во время этого обновления я столкнулся с ошибкой «Один и тот же столбец добавляется несколько раз с разными значениями для isInsertable».

У меня был следующий код в одном из моих объектов:

@MapsId("campaignMonthlyInfoId")
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumns({@JoinColumn(name = "campaign_id", referencedColumnName = "id", insertable = false,
                            updatable = false),
                   @JoinColumn(name = "month", referencedColumnName = "month", insertable = false,
                               updatable = false),
                   @JoinColumn(name = "year", referencedColumnName = "year", insertable = false,
                               updatable = false)})
private CampaignMonthlyInfo campaignMonthlyInfo;

@EmbeddedId
CampaignDspMonthlyInfoId campaignDspMonthlyInfoId;

Когда яудалить это из моей сущности, приложение работает нормально.но мне нужно сохранить это в своем коде.

CampaignMonthlyInfoId Entity:

@Embeddable
public class CampaignDspMonthlyInfoId implements Serializable {

  @Column
  @Enumerated(EnumType.STRING)
  Dsp dsp;

  @Embedded
  CampaignMonthlyInfoId campaignMonthlyInfoId;

  public CampaignDspMonthlyInfoId() {
  }

  public CampaignDspMonthlyInfoId(final Dsp dsp, final CampaignMonthlyInfoId id) {
    this.dsp = dsp;
    this.campaignMonthlyInfoId = id;
  }

  public Dsp getDsp() {
    return dsp;
  }

  public void setDsp(final Dsp dsp) {
    this.dsp = dsp;
  }

  public CampaignMonthlyInfoId getCampaignMonthlyInfoId() {
    return campaignMonthlyInfoId;
  }

  public void setCampaignMonthlyInfoId(final CampaignMonthlyInfoId campaignMonthlyInfoId) {
    this.campaignMonthlyInfoId = campaignMonthlyInfoId;
  }

  @Override
  public boolean equals(Object o) {
    if (this == o)
      return true;
    if (o == null || getClass() != o.getClass())
      return false;
    CampaignDspMonthlyInfoId that = (CampaignDspMonthlyInfoId) o;
    return dsp == that.dsp && Objects.equal(campaignMonthlyInfoId, that.campaignMonthlyInfoId);
  }

  @Override
  public int hashCode() {
    return Objects.hashCode(dsp, campaignMonthlyInfoId);
  }

  @Override
  public String toString() {
    return MoreObjects.toStringHelper(this).add("dsp", dsp)
        .add("campaignMonthlyInfoId", campaignMonthlyInfoId).toString();
  }
}

CampaignMonthlyInfoId:

@Embeddable
public class CampaignMonthlyInfoId implements Serializable {

  long id;
  Month month;
  int year;


  public long getId() {
    return id;
  }

  public void setId(long id) {
    this.id = id;
  }

  public Month getMonth() {
    return month;
  }

  public void setMonth(Month month) {
    this.month = month;
  }

  public int getYear() {
    return year;
  }

  public void setYear(int year) {
    this.year = year;
  }

  public CampaignMonthlyInfoId() {

  }

  public CampaignMonthlyInfoId(long id, Month month, int year) {
    this.id = id;
    this.month = month;
    this.year = year;
  }

  @Override
  public String toString() {
    return "CampaignMonthlyInfoId{" + "id=" + id + ", month=" + month + ", year=" + year + '}';
  }

  @Override
  public boolean equals(Object o) {
    if (this == o) {
      return true;
    }
    if (o == null || getClass() != o.getClass()) {
      return false;
    }

    CampaignMonthlyInfoId that = (CampaignMonthlyInfoId) o;

    if (id != that.id) {
      return false;
    }
    if (year != that.year) {
      return false;
    }
    return month == that.month;
  }

  @Override
  public int hashCode() {
    int result = (int) (id ^ (id >>> 32));
    result = 31 * result + month.hashCode();
    result = 31 * result + year;
    return result;
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...