这是我想在我的 PLAY 项目中表示的情况:
table clients {
client_id (pk),
description
}
table items {
client_id (fk, pk),
item_id (pk)
}
在“项目”表中,我想要一个复合主键,它将由组合的 client_id 和 item_id 组成。我已阅读 JPA 文档以及有关该主题的许多帖子,但一切都一次又一次地失败。这是我尝试过的众多版本之一 - 最接近 JPA 文档。
@Entity
@Table(name = "items")
public class Items extends Model {
ItemsPK primaryKey;
public Items() {
}
@EmbeddedId
public ItemsPK getPrimaryKey() {
return primaryKey;
}
public void setPrimaryKey(ItemsPK pk) {
primaryKey = pk;
}
}
@Embeddable
public class ItemsPK implements Serializable {
private long itemId;
private Client client;
public ItemsPK() {
}
@Column(name = "item_id")
@GeneratedValue(strategy = GenerationType.AUTO)
public long getItemId() {
return itemId;
}
public void setItemId(long itemId) {
this.itemId = itemId;
}
@ManyToOne
@JoinColumn(name = "client_id", nullable = false)
public Client getClient() {
return client;
}
public void setClient(Client client) {
this.client = client;
}
//public int hashCode() {...
//public boolean equals(Object obj) {...
}
上面的代码(以及许多其他不同的设置)在播放启动期间产生以下错误:
java.lang.RuntimeException:在 com.avaje.ebeaninternal.server.deploy.parse.ReadAnnotations.readAssociations(ReadAnnotations.java:73) ~[ebean.jar:na] 在 com.avaje.ebeaninternal 读取 models.ItemsPK 的注释时出错.server.deploy.BeanDescriptorManager.readDeployAssociations(BeanDescriptorManager.java:1100) ~[ebean.jar:na]
我不知道我的代码可能有什么问题。我开始认为这是一个 PLAY 错误。有任何想法吗?