2

私は Play Framework 2.0 (Java) を使用していますが、グローバルに単純な InitialData を実装した後、問題が発生しています。私は使用しています

私は2つのモデルを持っています:

  • ユーザー(IDとしての電子メール)
  • SomeModel(IDとして長いID)

SomeModel には次のようなフィールドがあります。

@ManyToOne
  public User user;

そのため、ユーザーには多くの SomeModels が接続されています。

私の InitialData では、何かをテストするためにユーザーを追加していました: test@test.com.

したがって、このテスト ユーザーに SomeModel を追加しようとしても、複数追加しようとしても問題はありません。

InitialData に SomeModel (TestModel を呼び出すことができます) を追加したとき、すべてがこの TestModel で実行されていたので、問題はないと思いました。しかし今、新しい SomeModel をテスト ユーザーに追加しようとすると、次の問題が発生することがわかりました。

[PersistenceException: ERROR executing DML bindLog[] error[Unique index or primary key violation: "PRIMARY_KEY_D ON PUBLIC.SOME_MODEL(ID)"; SQL statement:\n insert into some_model (id, name, description, user_email) values (?,?,?,?) [23505-158]]]

これは私の InitialData ファイルです:

# Users

users:

    - !!models.User
        email:      test@test.com
        name:       Test test
        password:   test


# SomeModels
somemodels:

    - !!models.FuzzySystem
        id:       1
        name:       test
        description:   test
        user:       !!models.User
                            email: test@test.com

私はこれで迷っています =(

4

1 に答える 1

4

だから、私は、initialDataがSomeModelのIDを持つべきではないことを知りました...

IDフィールドを削除した後、すべてが正常に機能しました。

これが私のinitialDataファイルです。

# Users

users:

    - !!models.User
        email:      test@test.com
        name:       Test test
        password:   test


# SomeModels
somemodels:

    - !!models.FuzzySystem
        name:       test
        description:   test
        user:       !!models.User
                            email: test@test.com
于 2012-11-11T00:38:19.623 に答える