我似乎無法弄清楚什麼是錯的。
當使用次框架CRUD模塊將信息插入DB(MySQL的)
(我使用如在http://www.playframework.org/documentation/1.0.1/crud所示的默認模塊插入機構)
我收到以下異常播放框架「無法插入」異常
的PersistenceException發生: 有機.hibernate.exception.GenericJDBCException:無法插入: [models.Mail]
在{模塊:污物} /app/controllers/CRUD.java(圍繞線152)
} catch (TemplateNotFoundException e) {
render("CRUD/blank.html", type, object);
}
}
Here -> object._save();
flash.success(play.i18n.Messages.get("crud.created", type.modelName));
if (params.get("_save") != null) {
redirect(request.controller + ".list");
}
if (params.get("_saveAndAddAnother") != null) {
redirect(req
uest.controller + ".blank");
這是我的郵件實體類:
@Entity
public class Mail extends Model {
public String title;
public Date sentAt;
@OneToMany
public Set<User> sentTO;
@OneToMany
public Set<User> sentBCC;
public String content;
@ManyToOne
public User author;
public Mail(User author, ...){
//more code here
}
}
控制器
package controllers;
/**
*
* @author mike
*/
public class Mails extends CRUD{
}
[疊滿]
執行異常(在{模塊:污物} /應用/controllers/CRUD.java line 152)PersistenceExcepti在發生: org.hibernate.exception.GenericJDBCException:無法插入: [models.Mail]
play.exceptions.JavaExecutionException: org.hibernate.exception.GenericJDBCException:無法插入: [models.Mail ]在 play.mvc.ActionInvoker.invoke(ActionInvoker.java:231)在 Invocation.HTTP請求(玩!)產生的原因: javax.persistence.PersistenceException: org.hibernate.exception.GenericJDBCException:無法插入: [models.Mail] at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1214) a噸 org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1147) 在 org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1153) 在 org.hibernate.ejb.AbstractEntityManagerImpl.persist( AbstractEntityManagerImpl.java:678) at play.db.jpa.JPABase._save(JPABase.java:25)at controllers.CRUD.create(CRUD.java:152)at play.mvc.ActionInvoker.invokeWithContinuation(ActionInvoker。的java:548) 在play.mvc.ActionInvoker.invoke(ActionInvoker.java:502)在 play.mvc.ActionInvoker.invokeControllerMethod(ActionInvoker.java:478) 在 play.mvc.ActionInvoker.invokeControllerMeth od(ActionInvoker.java:473) at play.mvc.ActionInvoker.invoke(ActionInvoker.java:161)... 1更多 引起:org.hibernate.exception.GenericJDBCException:不能 插入:[models.Mail ]在 org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:140) 在 org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:128) 在 org.hibernate.exception.JDBCExceptionHelper.convert (JDBCExceptionHelper.java:66) at org.hibernate.id.insert.AbstractReturningDelegate。performInsert(AbstractReturningDelegate.java:64) 在 org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2345) 在 org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2852) 在 org.hibernate.action.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:71) 在org.hibernate.engine.ActionQueue.execute(ActionQueue.java:273)在 org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate (AbstractSaveEventListener.java:320) 在 org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:203) 在 org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:129) 在 org.hibernate.ejb.event.EJB3PersistEventListener.saveWithGeneratedId(EJB3PersistEventListener.java:69) 在 org.hibernate.event.def .DefaultPersistEventListener.entityIsTransient(DefaultPersistEventListener.java:179) 在 org.hibernate.event.def.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:135) 在 org.hibernate.event.def.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java :61) at org.hibernate.impl.SessionImpl.firePersist(SessionImpl.java:808) at org.hibernate.impl.SessionImpl.persist(SessionImpl.java:782 ) org.hibernate.impl.SessionImpl.persist(SessionImpl.java:786)at org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:672) ... 8 more引起來自:java.sql。 SQLException:字段'isAdmin'不具有默認值 在 com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073)在 com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3593)在 com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3525)at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1986)at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO。的java:2140)在 com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2626)在 com.mysql.jdbc.Prepar edStatement.executeInternal(PreparedStatement.java:2111) 在 com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2407) 在 com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2325) 在 com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2310) 在 org.hibernate.id.IdentityGenerator $ GetGeneratedKeysDelegate.executeAndExtract(IdentityGenerator.java:94) 在 org.hibernate.id.insert.AbstractReturningDelegate .performInsert(AbstractReturningDelegate.java:57) ...... 23多個
有什麼想法?
你有擴展你的控制器與播放 – basav 2012-02-09 12:11:11
給予CRUD控制器你能複製錯誤的整個stacktrace? – romaintaz 2012-02-09 12:20:55
增加了控制器和完整的堆棧,你可以看到它擴展了CRUD類。 – james 2012-02-09 12:26:22