把mysql里time的类型改成TIMESTAMP,默认值为CURRENT_TIMESTAMP,结果就出错了。。。

时间:2021-01-15 09:55:31

我的目的是让数据库自动保存数据写入的时间。。。

错误提示如下:

exception 
javax.servlet.ServletException: org.hibernate.PropertyValueException: not-null property references a null or transient value: com.yourcompany.dao.BBS.time
org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:535)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:433)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
com.yourcompany.servlet.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:39)
com.yourcompany.servlet.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:39)


root cause 
org.hibernate.PropertyValueException: not-null property references a null or transient value: com.yourcompany.dao.BBS.time
org.hibernate.engine.Nullability.checkNullability(Nullability.java:95)
org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:313)
org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:204)
org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:144)
org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:210)
org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:56)
org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:195)
org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:50)
org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:93)
org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:563)
org.hibernate.impl.SessionImpl.save(SessionImpl.java:551)
org.hibernate.impl.SessionImpl.save(SessionImpl.java:547)
com.yourcompany.dao.BBSDAO.save(BBSDAO.java:38)
com.yourcompany.struts.action.FatieAction.execute(FatieAction.java:49)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
com.yourcompany.servlet.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:39)
com.yourcompany.servlet.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:39)

是本来不为空的time获取到了null值吗?应该在工程里填什么代码吗?还是只改数据库里time的属性就行啊。

7 个解决方案

#1


在你数据库中的字段设置的为not-null而操作是为null

#2


恩,我知道,可是为什么会获取到空呢,我只把mysql里的time属性改了,工程里没有其他关于时间的编码
引用 1 楼 wuda236556254 的回复:
在你数据库中的字段设置的为not-null而操作是为null

#3


改成varchar

#4


改为字符类型的!

#5


您说把time属性改成字符型的?我想让数据库自动添加写入时间,这样还能自动添加了吗?
引用 3 楼 zhouyusunquan 的回复:
改成varchar

#6


您说把time属性改成字符型的?我想让数据库自动添加写入时间,这样还能自动添加了吗?
引用 4 楼 c517984604 的回复:
改为字符类型的!

#7


引用 3 楼 zhouyusunquan 的回复:
改成varchar

同意

#1


在你数据库中的字段设置的为not-null而操作是为null

#2


恩,我知道,可是为什么会获取到空呢,我只把mysql里的time属性改了,工程里没有其他关于时间的编码
引用 1 楼 wuda236556254 的回复:
在你数据库中的字段设置的为not-null而操作是为null

#3


改成varchar

#4


改为字符类型的!

#5


您说把time属性改成字符型的?我想让数据库自动添加写入时间,这样还能自动添加了吗?
引用 3 楼 zhouyusunquan 的回复:
改成varchar

#6


您说把time属性改成字符型的?我想让数据库自动添加写入时间,这样还能自动添加了吗?
引用 4 楼 c517984604 的回复:
改为字符类型的!

#7


引用 3 楼 zhouyusunquan 的回复:
改成varchar

同意