0

初期データ.yaml ファイルを使用して、Play に含まれているサンプル zentasks アプリケーションのように、Play アプリケーションで JUnit テストをセットアップしようとしています。

私のアプリケーションにはユーザーがいて、ユーザーはロードを作成できるため、ロードはユーザーと多対 1 で関連付けられます。私の 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 で、テスト データとして使用するために、次のようにユーザーを使用して 2 つの Load を設定しようとしています。

ユーザー:

- !!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

I don't know if it will help, but don't use User as the table name since it is a keyword in many database server:

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

Change it accordingly in your mappings.

于 2013-01-08T08:26:10.347 に答える