Google app engine JPA,类的元数据错误:多个主键字段
我有一个家长和一个孩子班。运行应用程序时,我遇到以下错误:Google app engine JPA,类的元数据错误:多个主键字段,google-app-engine,jpa,google-cloud-datastore,metadata,Google App Engine,Jpa,Google Cloud Datastore,Metadata,我有一个家长和一个孩子班。运行应用程序时,我遇到以下错误: Error in meta-data for com.twitterjaya.model.HistoryDeviceJPA: More than one primary key field. 我不知道为什么它说我定义了不止一个主键。如有任何建议,将不胜感激 @Entity(name = "HistoryJPA") @Inheritance(strategy = InheritanceType.TABLE_PER_CLASS) @Dis
Error in meta-data for com.twitterjaya.model.HistoryDeviceJPA: More than one primary key field.
我不知道为什么它说我定义了不止一个主键。如有任何建议,将不胜感激
@Entity(name = "HistoryJPA")
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
@DiscriminatorValue("HistoryJPA")
public class HistoryJPA {
@Id
String pageAddress;
String domain;
String pageTitle;
long pageVisits;
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
HistoryJPA that = (HistoryJPA) o;
if (!pageAddress.equals(that.pageAddress)) return false;
return true;
}
@Override
public int hashCode() {
return pageAddress.hashCode();
}
@Override
public String toString() {
return "HistoryJPA{" +
"pageAddress='" + pageAddress + '\'' +
", domain='" + domain + '\'' +
", pageTitle='" + pageTitle + '\'' +
", pageVisits=" + pageVisits +
'}';
}
public String getPageAddress() {
return pageAddress;
}
public void setPageAddress(String pageAddress) {
this.pageAddress = pageAddress;
}
public String getDomain() {
return domain;
}
public void setDomain(String domain) {
this.domain = domain;
}
public String getPageTitle() {
return pageTitle;
}
public void setPageTitle(String pageTitle) {
this.pageTitle = pageTitle;
}
public long getPageVisits() {
return pageVisits;
}
public void setPageVisits(long pageVisits) {
this.pageVisits = pageVisits;
}
}
儿童班:
@Entity(name = "HistoryDeviceJPA")
@DiscriminatorValue("HistoryDeviceJPA")
public class HistoryDeviceJPA extends HistoryJPA {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String userUUID;
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
if (!super.equals(o)) return false;
HistoryDeviceJPA that = (HistoryDeviceJPA) o;
if (!id.equals(that.id)) return false;
if (!userUUID.equals(that.userUUID)) return false;
return true;
}
@Override
public int hashCode() {
int result = super.hashCode();
result = 31 * result + id.hashCode();
result = 31 * result + userUUID.hashCode();
return result;
}
@Override
public String toString() {
return "HistoryDeviceJPA{" +
"id=" + id +
", userUUID='" + userUUID + '\'' +
'}';
}
public String getUserUUID() {
return userUUID;
}
public void setUserUUID(String userUUID) {
this.userUUID = userUUID;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
}
如错误消息所述,您有两个主键(用
@Id
注释):
- 在
字段HistoryJPA
pageAddress
- 字段
id
您应该去掉其中一个,或者根据您的需要创建一个新文档。谢谢,我发现此文档也很有用: