初期データ.yaml ファイルを使用して、Play に含まれているサンプル zentasks アプリケーションのように、Play アプリケーションで JUnit テストをセットアップしようとしています。
私のアプリケーションにはユーザーがいて、ユーザーはロードを作成できるため、ロードはユーザーと多対 1 で関連付けられます。私の Load.java モデルには、次のコードがあります。
@ManyToOne
@JoinColumn(name="uid",nullable=false)
public User user;
そしてUser.javaで:
@OneToMany(mappedBy="user")
public Set<Load> loads;
app/conf/ の initial-data.yaml で、テスト データとして使用するために、次のようにユーザーを使用して 2 つの Load を設定しようとしています。
ユーザー:
- !!models.User
id: 1
username: rachael
password: secret
name: Rachael P
email: email@gmail.com
userclass: 1
- !!models.User
id: 2
username: wildbill
password: secret
name: Billy Z
email: email2@gmail.com
userclass: 1
- !!models.User
id: 3
username: sammydude
password: secret
name: Sammy
userclass: 0
負荷:
- !!models.Load
id: 1
user: !!models.User
id: 3
created: 2013-1-4 10:00:00 -05:00
modified: 2013-1-5 15:30:00 -05:00
invoiceNumber: 324
billOfLadingNumber: 435d
proNumber: 334mqr86547tr
status: PENDING
rawCharge: 25.00
totalWeight: 50.00
numPallets: 1
units: box(es)
- !!models.Load
id: 2
user: !!models.User
id: 2
created: 2013-1-4 10:00:00 -05:00
modified: 2013-1-5 15:30:00 -05:00
invoiceNumber: 328
billOfLadingNumber: 97re
proNumber: 43y43j5yh4
status: PENDING
rawCharge: 60.00
totalWeight: 400.00
numPallets: 1
units: box(es)
app/Global.java では、行はエラーなしEbean.save(all.get("users"));
でEbean.save(all.get("loads"));
コンパイルvalidation failed for: models.User
されますが、次の行でエラーが発生します。
for(Object load : all.get("loads")) {
// Insert load/user relation
Ebean.saveAssociation(load, "user");
}
誰でもエラーを見つけることができますか? 私はコードを何度も繰り返してきましたが、私が知る限り、関連付けを保存するために正しい方法を使用しています。ユーザーと負荷を別々に保存する別の理由は考えられませんが、関連付けを保存するときにエラーが発生します。