我正在尝试在Play应用程序中设置JUnit测试,就像在Play中包含的示例zentasks应用程序一样,使用initial-data.yaml文件。
我的应用程序有用户,用户可以创建加载,因此加载与用户具有多对一关联。在我的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中,我正在尝试使用这样的用户设置两个Loads,以用作测试数据:
用户:
- !!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");
}
有人能发现错误吗?我一遍又一遍地使用代码,但据我所知,我正在使用正确的方法来保存关联。我想不出另一个原因,为什么它会单独保存用户和负载没有问题,但保存关联时出错。
答案 0 :(得分:1)
我不知道它是否有用,但不要使用User
作为表名,因为它是许多数据库服务器中的关键字:
@Entity
@Table(name = "myUserTable")
public class User extends Model {
...
}
在映射中相应地更改它。