我似乎无法找出问题所在。
在使用播放框架CRUD模块将信息插入数据库(mySql)时
(我正在使用默认的模块插入机制,如http://www.playframework.org/documentation/1.0.1/crud所示)
我收到以下异常
发生PersistenceException:
org.hibernate.exception.GenericJDBCException:无法插入:
[models.mail]
在{module:crud} /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{
}
[全栈]
执行异常(在{module:crud} /app/controllers/CRUD.java中
第152行)发生了PersistenceException:
org.hibernate.exception.GenericJDBCException:无法插入:
[models.mail]
play.exceptions.JavaExecutionException:
org.hibernate.exception.GenericJDBCException:无法插入:
[models.Mail]位于
在以下位置播放play.mvc.ActionInvoker.invoke(ActionInvoker.java:231)
Invocation.HTTP Request(Play!)由以下原因引起:
javax.persistence.PersistenceException:
org.hibernate.exception.GenericJDBCException:无法插入:
[models.Mail]位于
org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1214)
在
org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1147)
在
org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1153)
在
org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:678)
在play.db.jpa.JPABase._save(JPABase.java:25)处
controllers.CRUD.create(CRUD.java:152)在
play.mvc.ActionInvoker.invokeWithContinuation(ActionInvoker.java:548)
在play.mvc.ActionInvoker.invoke(ActionInvoker.java:502)处
play.mvc.ActionInvoker.invokeControllerMethod(ActionInvoker.java:478)
在
play.mvc.ActionInvoker.invokeControllerMethod(ActionInvoker.java:473)
在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)
在
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)
在org.hibernate.impl.SessionImpl.firePersist(SessionImpl.java:808)
在org.hibernate.impl.SessionImpl.persist(SessionImpl.java:782)处
org.hibernate.impl.SessionImpl.persist(SessionImpl.java:786)在
org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:672)
... 8更多原因: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)在
com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1986)在
com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2140)位于
com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2626)在
com.mysql.jdbc.PreparedStatement.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个
有任何想法吗?
最佳答案
查看实际原因
Caused by: java.sql.SQLException: Field 'isAdmin' doesn't have a default value
看起来您试图在不设置isAdmin属性的情况下保存到行中(该属性也未在模型中定义,但可能在您的实际数据库中?)。