JPA 查詢返回重複第一行的問題
阿新 • • 發佈:2022-03-18
用JPA Entity對映資料表查詢出來f返回List
的時候發現表裡滿足條件得記錄有三條,但實體查詢出來結果三條記錄都是拿第一條重複,分析發現是因為Entity實體沒有指定主鍵欄位或者指定的欄位不唯一所導致的。比如:
@Entity @Table(name = "my_table") public class PoiPlaceEntity implements java.io.Serializable { private String name; private String time; private String content; private Double lat; private Double lon; @Id @Column(name = "name") public String getName() { return name; } public void setName(String name) { this.name = name; } @Basic @Column(name = "time") public String getTime() { return time; } public void setTime(String time) { this.time = time; } @Basic @Column(name = "content") public String getContent() { return content; } public void setContent(String content) { this.content = content; } @Basic @Column(name = "lat") public Double getLat() { return lat; } public void setLat(Double lat) { this.lat = lat; } @Basic @Column(name = "lon") public Double getLon() { return lon; } public void setLon(Double lon) { this.lon = lon; } }
上面的實體中把name欄位當作主鍵,但name不唯一,導致查詢出來的結果中記錄條數是對的,但仔細一看都是拿第一條記錄重複的。其實只要從表裡找一個唯一欄位設定成主鍵就可以,比如上面的實體中經緯度座標應該是唯一的,所以在lat
前面加個@Id
註解:
@Id
@Column(name = "lat")
public Double getLat() {
return lat;
}