2011-03-24 64 views
1

使用內存數據庫(db = mem),我只是試圖插入一個新的對象到數據庫使用CRUD。從一個簡單的類的簡單CRUD的PersistenceException

類如下:

@Entity 
public class ActivityModel extends Model { 
    @Required 
    public String description; 

    @Required 
    public String link; 

    @Required 
    public Date timestamp; 

    public ActivityModel(String description, String link, Date timestamp) { 
     this.description = description; 
     this.link = link; 
     this.timestamp = timestamp; 
    } 
} 

而且CRUD控制器看起來是這樣的:

@CRUD.For(ActivityModel.class) 
public class Activities extends CRUD { 
} 

然而,當我嘗試新的活動添加到數據庫中,我得到以下錯誤:

13:48:20,710 INFO ~ Application 'ScoreDB' is now started ! 
13:48:48,323 WARN ~ SQL Error: -177, SQLState: 23000 
13:48:48,323 ERROR ~ Integrity constraint violation - no parent FKF0DCD93AADF686FF table: USERMODEL in statement [insert into ActivityModel (id, description, link, timestamp) values (null, ?, ?, ?)] 
13:48:48,370 ERROR ~ 

@65pagp52g 
Internal Server Error (500) for request POST /admin/activities 

Execution exception (In {module:crud}/app/controllers/CRUD.java around line 135) 
PersistenceException occured : org.hibernate.exception.ConstraintViolationException: could not insert: [models.users.hidden.ActivityModel] 

play.exceptions.JavaExecutionException: org.hibernate.exception.ConstraintViolationException: could not insert: [models.users.hidden.ActivityModel] 
    at play.mvc.ActionInvoker.invoke(ActionInvoker.java:290) 
    at Invocation.HTTP Request(Play!) 
Caused by: javax.persistence.PersistenceException: org.hibernate.exception.ConstraintViolationException: could not insert: [models.users.hidden.ActivityModel] 
    at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1235) 
    at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1168) 
    at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1174) 
    at org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:674) 
    at play.db.jpa.JPABase._save(JPABase.java:37) 
    at controllers.CRUD.create(CRUD.java:135) 
    at play.mvc.ActionInvoker.invokeControllerMethod(ActionInvoker.java:413) 
    at play.mvc.ActionInvoker.invokeControllerMethod(ActionInvoker.java:408) 
    at play.mvc.ActionInvoker.invoke(ActionInvoker.java:182) 
    ... 1 more 

... etc ... 

我在做什麼錯? :S

+0

該錯誤與您顯示的代碼不匹配。你確定這是正在執行的類嗎? – 2011-03-28 10:22:41

回答

1

顯然,這是因爲出現了包含下面的代碼不同的類:

@OneToMany(cascade = CascadeType.ALL, mappedBy="id") 
public Collection<ActivityModel> activities; 

在其中「的mappedBy =‘ID’」是問題的根源。

刪除這個,它的所有作品:)