關於出現 idclass mapping 運行錯誤 @IdClass 註釋通常用於定義包含複合鍵id的Class。即多個屬性的關鍵複合。 @IdClass(CountrylanguageEntityPK.class) 則CountrylanguageEntityPK如下所示: 使用註解 @IdCla ...
關於出現 idclass mapping 運行錯誤
@IdClass
註釋通常用於定義包含複合鍵id的Class。即多個屬性的關鍵複合。
@IdClass(CountrylanguageEntityPK.class) 則CountrylanguageEntityPK如下所示:
package org.entity;
import javax.persistence.Column;
import javax.persistence.Id;
import java.io.Serializable;
import java.util.Objects;
public class CountrylanguageEntityPK implements Serializable {
private String countryCode;
private String language;
@Column(name = "CountryCode", nullable = false, length = 3)
@Id
public String getCountryCode() {
return countryCode;
}
public void setCountryCode(String countryCode) {
this.countryCode = countryCode;
}
@Column(name = "Language", nullable = false, length = 30)
@Id
public String getLanguage() {
return language;
}
public void setLanguage(String language) {
this.language = language;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
CountrylanguageEntityPK that = (CountrylanguageEntityPK) o;
return Objects.equals(countryCode, that.countryCode) &&
Objects.equals(language, that.language);
}
@Override
public int hashCode() {
return Objects.hash(countryCode, language);
}
}
使用註解 @IdClass 的Entity類通常
應該具有以下屬性:
- 實現Serializable
- 一個構造函數,它接受id(即與之關聯的欄位
@Id
) - 重寫
equals
和hashCode
如果出現 idclass mapping 運行錯誤即可從以上三個三個方面查看問題原因所在,註:使用註解形式的同時如果編譯器反向生成Entity.hbm.xml 的同時 hibernate.cfg.xml會被添加這些hbm.xml 的 mapping resource 項
則也會出現 idclass mapping 的錯誤。