2012-04-03 65 views
2

我試圖建立我自己的模型,並通過initial-data.yml填充它。播放框架2.0 Java - 定義模型錯誤和初始data.yml

那就是:

#Artists 

artists: 

    - !!models.Artist 
     id: 1 
     name: orelsan 
     occupation: chanteur 

#Records 
records: 
    - !!models.Record 
     id: 1 
     title: Le chant des sirenes 
     vinylType: La classe 
     pressInfo: a 
     style: rap 
     hits: 11 
     artist: !!models.Artist 
        id: 1 

而不同的java文件,它描述了模型:Record.java -

@Entity 
public class Record extends Model{ 

    @Id 
    public Long id; 

    @Required 
    public String title; 

    public String vinylType; 

    public String pressInfo; 

    public String style; 

    @ManyToOne 
    public Artist artist; 

    public int hits;//Number of time played-consulted 

    /** 
    * Generic query helper for entity record with id Long 
    */ 
    public static Finder<Long,Record> find = new Finder<Long, Record>(Long.class, Record.class); 
} 

Artist.java -

@Entity 
public class Artist extends Model{ 

    @Id 
    public Long id; 

    @Required 
    public String name; 

    @Required 
    public String occupation; 

    /** 
    * Generic query helper for entity Computer with id Long 
    */ 
    public static Finder<Long,Artist> find = new Finder<Long, Artist>(Long.class, Artist.class); 

    public String toString(){ 
     return name; 
    } 

} 

和運行我的應用程序給我以下例外:

play.api.UnexpectedException: Unexpected exception [PersistenceException: ERROR executing DML bindLog[] error[Referential integrity constraint violation: "FK_RECORD_ARTIST_1: PUBLIC.RECORD FOREIGN KEY(ARTIST_ID) REFERENCES PUBLIC.ARTIST(ID)"; SQL statement:\n insert into record (id, title, vinyl_type, press_info, style, hits, artist_id) values (?,?,?,?,?,?,?) [23506-158]]] 
    at play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$3$$anonfun$1.apply(ApplicationProvider.scala:134) ~[play_2.9.1.jar:2.0] 
    at play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$3$$anonfun$1.apply(ApplicationProvider.scala:112) ~[play_2.9.1.jar:2.0] 
    at scala.Option.map(Option.scala:133) ~[scala-library.jar:0.11.2] 
    at play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$3.apply(ApplicationProvider.scala:112) ~[play_2.9.1.jar:2.0] 
    at play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$3.apply(ApplicationProvider.scala:110) ~[play_2.9.1.jar:2.0] 
    at scala.Either$RightProjection.flatMap(Either.scala:277) ~[scala-library.jar:0.11.2] 
Caused by: javax.persistence.PersistenceException: ERROR executing DML bindLog[] error[Referential integrity constraint violation: "FK_RECORD_ARTIST_1: PUBLIC.RECORD FOREIGN KEY(ARTIST_ID) REFERENCES PUBLIC.ARTIST(ID)"; SQL statement:\n insert into record (id, title, vinyl_type, press_info, style, hits, artist_id) values (?,?,?,?,?,?,?) [23506-158]] 
    at com.avaje.ebeaninternal.server.persist.dml.DmlBeanPersister.execute(DmlBeanPersister.java:116) ~[ebean.jar:na] 
    at com.avaje.ebeaninternal.server.persist.dml.DmlBeanPersister.insert(DmlBeanPersister.java:76) ~[ebean.jar:na] 
    at com.avaje.ebeaninternal.server.persist.DefaultPersistExecute.executeInsertBean(DefaultPersistExecute.java:91) ~[ebean.jar:na] 
    at com.avaje.ebeaninternal.server.core.PersistRequestBean.executeNow(PersistRequestBean.java:527) ~[ebean.jar:na] 
    at com.avaje.ebeaninternal.server.core.PersistRequestBean.executeOrQueue(PersistRequestBean.java:557) ~[ebean.jar:na] 
    at com.avaje.ebeaninternal.server.persist.DefaultPersister.insert(DefaultPersister.java:404) ~[ebean.jar:na] 
Caused by: org.h2.jdbc.JdbcSQLException: Referential integrity constraint violation: "FK_RECORD_ARTIST_1: PUBLIC.RECORD FOREIGN KEY(ARTIST_ID) REFERENCES PUBLIC.ARTIST(ID)"; SQL statement: 
insert into record (id, title, vinyl_type, press_info, style, hits, artist_id) values (?,?,?,?,?,?,?) [23506-158] 
    at org.h2.message.DbException.getJdbcSQLException(DbException.java:329) ~[h2.jar:1.3.158] 
    at org.h2.message.DbException.get(DbException.java:169) ~[h2.jar:1.3.158] 
    at org.h2.message.DbException.get(DbException.java:146) ~[h2.jar:1.3.158] 
    at org.h2.constraint.ConstraintReferential.checkRowOwnTable(ConstraintReferential.java:345) ~[h2.jar:1.3.158] 
    at org.h2.constraint.ConstraintReferential.checkRow(ConstraintReferential.java:287) ~[h2.jar:1.3.158] 
    at org.h2.table.Table.fireConstraints(Table.java:861) ~[h2.jar:1.3.158] 

我真的不明白這是從哪裏來的。我基本上基於我的代碼ZenTask示例。雖然它會起作用。

有沒有人有想法?

感謝

回答

0

請確保您有在Global.java的Ebean.save正確的順序。從你上面的例子來看,我希望你能在紀錄之前節省藝術家