在Play框架中测试模型:initial-data.yaml验证失败

时间:2013-01-08 02:28:29

标签: playframework-2.0 yaml

我正在尝试在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");
    }

有人能发现错误吗?我一遍又一遍地使用代码,但据我所知,我正在使用正确的方法来保存关联。我想不出另一个原因,为什么它会单独保存用户和负载没有问题,但保存关联时出错。

1 个答案:

答案 0 :(得分:1)

我不知道它是否有用,但不要使用User作为表名,因为它是许多数据库服务器中的关键字:

@Entity
@Table(name = "myUserTable")
public class User extends Model {
...
}

在映射中相应地更改它。