我似乎无法弄清楚什么是错的。
当使用次框架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