【发布时间】:2021-01-01 18:30:02
【问题描述】:
我不断收到错误:
org.hibernate.MappingException:实体映射中的重复列: net.tekknow.moneymachine.model.Quote 列:日期(应映射 用 insert="false" update="false")"
无论我尝试什么。
这是我的 Quote 课程:
public class Quote {
@EmbeddedId
private QuoteId quoteId; //composite id needed by hibernate
private String symbol;
private Date date;
private float close;
public Quote() {}
public Quote(String symbol, Date date, float close) {
this.symbol = symbol;
this.date = date;
this.close = close;
}
public QuoteId getId() {
return quoteId;
}
public void setId(QuoteId id) {
this.quoteId = id;
}
@Column(name = "symbol", insertable = false, updatable = false, nullable = false)
public String getSymbol() {
return symbol;
}
public void setSymbol(String symbol) {
this.symbol = symbol;
}
@Column(name = "date", insertable = false, updatable = false, nullable = false)
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
... //other getters and setters
这里是 QuoteId 类,Hibernate 应该需要它来连接两列作为每个 https://vladmihalcea.com/the-best-way-to-map-a-composite-primary-key-with-jpa-and-hibernate/ 的复合键
@Embeddable
public class QuoteId implements Serializable {
@Column(name = "symbol", insertable = false, updatable = false)
private String symbol;
@Column(name = "date", insertable = false, updatable = false)
private Date date;
public QuoteId(String symbol, Date date) {
this.symbol = symbol;
this.date = date;
}
public QuoteId() {}
public String getSymbol() {
return symbol;
}
public void setSymbol(String symbol) {
this.symbol = symbol;
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
... // other getters and setters
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
QuoteId that = (QuoteId) o;
return Objects.equals(symbol, that.symbol) && Objects.equals(date, that.date);
}
@Override
public int hashCode() {
return Objects.hash(symbol, date);
}
}
希望各位专家能告诉我我做错了什么。
【问题讨论】: