2013-01-08 72 views
0

我試圖在我的Play應用中使用initial-data.yaml文件設置JUnit測試,就像在包含Play的示例zentasks應用中一樣。在Play框架中測試模型:initial-data.yaml失敗驗證

我的應用程序有用戶,用戶可以創建一個負載,因此負載與用戶有多對一的關聯。在我Load.java模型,我的代碼:

@ManyToOne 
@JoinColumn(name="uid",nullable=false) 
public User user; 

和User.java:

@OneToMany(mappedBy="user") 
public Set<Load> loads; 

在應用程序/ conf目錄/初始data.yaml,我正在嘗試設置

用戶:

- !!models.User 
    id:   1 
    username: rachael 
    password: secret 
    name:  Rachael P 
    email:  [email protected] 
    userclass: 1 

- !!models.User 
    id:   2 
    username: wildbill 
    password: secret 
    name:  Billy Z 
    email:  [email protected] 
    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

我不知道這是否會幫助,但不要使用User作爲表名,因爲它是在許多數據庫服務器關鍵字:

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

改變它在相應的映射。