我正在尝试使用 initial-data.yaml 文件在我的 Play 应用程序中设置 JUnit 测试,就像在 Play 中包含的示例 zentasks 应用程序中一样。
我的应用程序有用户,一个用户可以创建一个负载,因此负载与用户是多对一的关联。在我的 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 中,我正在尝试像这样设置两个带有用户的负载,以用作测试数据:
用户:
- !!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");
}
任何人都可以发现错误吗?我一遍又一遍的代码,但据我所知,我正在使用正确的方法来保存关联。我想不出另一个原因,为什么它会分别保存用户和负载没有问题,但在保存关联时出错。