これは、PLAYプロジェクトで表現したい状況です。
table clients {
client_id (pk),
description
}
table items {
client_id (fk, pk),
item_id (pk)
}
'items'テーブルに、client_idとitem_idを組み合わせた複合主キーが必要です。JPAのドキュメントとこのトピックに関する多くの投稿を読みましたが、すべてが何度も失敗します。これは、私が試した多くのバージョンの1つであり、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のバグだと思い始めています。何か案は?