0

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

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

4

1 回答 1

1

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

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

在您的映射中相应地更改它。

于 2013-01-08T08:26:10.347 回答