亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

java - SSH 根據id字段不能更新數據問題

瀏覽:63日期:2023-11-08 13:43:41

問題描述

org.springframework.dao.DataIntegrityViolationException: not-null property references a null or transient value: com.lcy.po.AuthorAdmin.authorUsername; nested exception is org.hibernate.PropertyValueException: not-null property references a null or transient value: com.lcy.po.AuthorAdmin.authorUsername at org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:648) at org.springframework.orm.hibernate3.HibernateAccessor.convertHibernateAccessException(HibernateAccessor.java:412) at org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:411) at org.springframework.orm.hibernate3.HibernateTemplate.executeWithNativeSession(HibernateTemplate.java:374) at org.springframework.orm.hibernate3.HibernateTemplate.update(HibernateTemplate.java:705) at org.springframework.orm.hibernate3.HibernateTemplate.update(HibernateTemplate.java:701) at com.lcy.dao.author.admin.AuthorAdminDaoImpl.updateAuthorAdmin(AuthorAdminDaoImpl.java:48) at com.lcy.service.author.admin.AuthorAdminServiceImpl.updateAuthorAdmin(AuthorAdminServiceImpl.java:47) at com.lcy.action.author.admin.AuthorAdminAction.updateAuthorAdmin(AuthorAdminAction.java:124) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:452) at com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:291) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:254) at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:176) at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:263) at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68) at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:133) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:207) at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:207) at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:190) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) at org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:94) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:243) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) at org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:267) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:142) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:166) at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:176) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:190) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:187) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52) at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:485) at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77) at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) at java.lang.Thread.run(Thread.java:619)Caused by: org.hibernate.PropertyValueException: not-null property references a null or transient value: com.lcy.po.AuthorAdmin.authorUsername at org.hibernate.engine.Nullability.checkNullability(Nullability.java:95) at org.hibernate.event.def.DefaultFlushEntityEventListener.scheduleUpdate(DefaultFlushEntityEventListener.java:292) at org.hibernate.event.def.DefaultFlushEntityEventListener.onFlushEntity(DefaultFlushEntityEventListener.java:151) at org.hibernate.event.def.AbstractFlushingEventListener.flushEntities(AbstractFlushingEventListener.java:219) at org.hibernate.event.def.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:99) at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:49) at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1028) at org.springframework.orm.hibernate3.HibernateAccessor.flushIfNecessary(HibernateAccessor.java:390) at org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:407) ... 71 more

dao的方法

public void updateAuthorAdmin(AuthorAdmin aa) {try { basedao.getTemplate().update(aa); System.out.println('dao updateAuthorAdmin suc');} catch (Exception e) { System.out.println('dao updateAuthorAdmin error'); e.printStackTrace(); throw new RuntimeException();}@Override public AuthorAdmin getAuthorAdmin(Long id) {AuthorAdmin authorAdmin = basedao.getTemplate().get(AuthorAdmin.class,id);if (authorAdmin == null) { System.out.println('dao getAuthorAdmin沒有獲得對象');}System.out.println('dao getAuthorAdmin成功獲得對象');return authorAdmin; }

action層

public class AuthorAdminAction extends BaseAction implementsModelDriven<AuthorAdmin>{private AuthorAdmin authoradmin = new AuthorAdmin(); @Override public AuthorAdmin getModel() {return authoradmin; }public String getAuthorAdmin() {authoradmin= iauthoradminservice.getAuthorAdmin(authoradmin.getAuthorId());System.out.println('action getAuthorAdmin suc');return 'getSuccess'; }public String updateAuthorAdmin() {iauthoradminservice.updateAuthorAdmin(authoradmin);System.out.println('action updateAuthorAdmin suc');return 'updateSuccess'; }}

JSP頁面根據id跳轉

<a href='http://www.aoyou183.cn/wenda/${pageContext.request.contextPath}/get_AuthorAdmin?authorId=<s:property value='#obj.authorId'/>'></a>

進入修改表單

<s:form action='update_AuthorAdmin' method='post'><s:hidden name='authorId' value='%{model.authorId}'></s:hidden><s:textfield name='%{model.authorUsername}' label='用戶名'></s:textfield><s:textfield name='%{model.authorPwd}' label='密碼'></s:textfield><s:textfield name='%{model.authorName}' label='姓名'></s:textfield><s:textfield name='%{model.authorSex}' label='性別'></s:textfield><s:textfield name='%{model.authorBirth}' label='生日'></s:textfield><s:textfield name='%{model.authorRegion}' label='作者區域'></s:textfield><s:textfield name='%{model.authorAddress}' label='通訊地址'></s:textfield><s:textfield name='%{model.authorPost}' label='職稱'></s:textfield><s:textfield name='%{model.authorJob}' label='職業'></s:textfield><s:textfield name='%{model.authorCompany}' label='工作單位'></s:textfield><s:textfield name='%{model.authorDegree}' label='學歷'></s:textfield><s:textfield name='%{model.authorMajor}' label='專業方向'></s:textfield><s:textfield name='%{model.authorTitle}' label='文章標題'></s:textfield><s:textfield name='%{model.authorMail}' label='E-mail'></s:textfield><s:textfield name='%{model.authorPhone}' label='電話'></s:textfield><s:textfield name='%{model.authorInfo}' label='個人簡介'></s:textfield><s:submit value='修改'></s:submit> </s:form>

struct2.xml

<package name='authorAdmin' extends='struts-default'><action name='*_*' method='{1}{2}'> <result name='saveSuccess' type='redirectAction'>list_{2}.action</result> <result name='updateSuccess' type='redirectAction'>list_{2}.action</result> <result name='loginSuccess' type='redirectAction'>list_{2}.action</result> <result name='removeSuccess' type='redirectAction'>list_{2}.action</result> <result name='listSuccess'>/{2}/{1}/{1}Success.jsp</result> <result name='getSuccess'>/{2}/update/update.jsp</result></action> </package>

實體類的字段還有映射

private Long authorId; private String authorUsername; private String authorPwd; private String authorName; private String authorSex; private String authorBirth; private String authorRegion; private String authorAddress; private String authorPost; private String authorJob; private String authorCompany; private String authorDegree; private String authorMajor; private String authorTitle; private String authorMail; private String authorPhone; private String authorInfo; private Timestamp gmtCreate; private Timestamp gmtModified; private Set documentInfos = new HashSet(0);

<?xml version='1.0' encoding='utf-8'?><!DOCTYPE hibernate-mapping PUBLIC '-//Hibernate/Hibernate Mapping DTD 3.0//EN''http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd'><!-- Mapping file autogenerated by MyEclipse Persistence Tools--><hibernate-mapping> <class name='com.lcy.po.AuthorAdmin' table='author_admin' catalog='ssh'><id name='authorId' type='java.lang.Long'> <column name='author_id' /> <generator /></id><property name='authorUsername' type='java.lang.String'> <column name='author_username' length='20' not-null='true'><comment>用戶名</comment> </column></property><property name='authorPwd' type='java.lang.String'> <column name='author_pwd' length='20' not-null='true'><comment>密碼</comment> </column></property><property name='authorName' type='java.lang.String'> <column name='author_name' length='20'><comment>姓名</comment> </column></property><property name='authorSex' type='java.lang.String'> <column name='author_sex' length='2'><comment>性別</comment> </column></property><property name='authorBirth' type='java.lang.String'> <column name='author_birth' length='20'><comment>生日</comment> </column></property><property name='authorRegion' type='java.lang.String'> <column name='author_region' length='50'><comment>作者區域</comment> </column></property><property name='authorAddress' type='java.lang.String'> <column name='author_address' length='100'><comment>通訊地址</comment> </column></property><property name='authorPost' type='java.lang.String'> <column name='author_post' length='50'><comment>職稱</comment> </column></property><property name='authorJob' type='java.lang.String'> <column name='author_job' length='50'><comment>職業</comment> </column></property><property name='authorCompany' type='java.lang.String'> <column name='author_company' length='50'><comment>工作單位</comment> </column></property><property name='authorDegree' type='java.lang.String'> <column name='author_degree' length='40'><comment>學歷</comment> </column></property><property name='authorMajor' type='java.lang.String'> <column name='author_major' length='50'><comment>專業方向</comment> </column></property><property name='authorTitle' type='java.lang.String'> <column name='author_title' length='20'><comment>文章標題</comment> </column></property><property name='authorMail' type='java.lang.String'> <column name='author_mail' length='100'><comment>E-mail</comment> </column></property><property name='authorPhone' type='java.lang.String'> <column name='author_phone' length='11'><comment>電話</comment> </column></property><property name='authorInfo' type='java.lang.String'> <column name='author_info' length='65535'><comment>個人簡介</comment> </column></property><property name='gmtCreate' type='java.sql.Timestamp'> <column name='gmt_create' length='19'><comment>創建時間</comment> </column></property><property name='gmtModified' type='java.sql.Timestamp'> <column name='gmt_modified' length='19'><comment>修改時間</comment> </column></property><set name='documentInfos' inverse='true'> <key><column name='author_id' not-null='true'> <comment>稿件作者</comment></column> </key> <one-to-many /></set> </class></hibernate-mapping>

問題解答

回答1:

先看一下報錯,authorUsername是一個non-null屬性,有一個非空校驗,你提交了個空值,所以報錯了。可能導致的原因:

1.表單無輸入,或輸入錯誤2.屬性名稱前后不匹配,傳遞過程中,賦值失敗,造成丟值3.臟數據,讀取出來的數據存在問題,更新插入的時候空值失敗回答2:

看下basedao的方法吧

標簽: java
相關文章:
主站蜘蛛池模板: 伊人激情 | 在线免费影院 | 亚洲色图偷拍 | 久久成人激情视频 | a男人的天堂久久a毛片 | 天天色踪合合 | 久久国产精品亚洲va麻豆 | 真实一级一级一片免费视频 | a级国产乱理论片在线观看ai | 欧美成人艳星在线播放 | 99国产成+人+综合+亚洲 欧美 | 国产婷婷丁香久久综合 | 1024.1024亚洲 国产 图片 1024cao社区榴地址一地址二 | 久久久精品2021免费观看 | 亚洲巨乳自拍在线视频 | 一级做a免费视频 | 久久国产成人 | 免费在线观影网站 | 三级毛片免费看 | 亚洲九九九 | 亚洲精品tv | 99久久国语对白精品露脸 | 91国内在线观看 | 久久99热国产这有精品 | 国产性大片黄在线观看在线放 | 999成人精品视频在线 | 性欧美高清理论片 | 9191精品国产免费不久久 | 最新色图 | 国产一二三四区中 | 久久久久国产一级毛片高清板 | 亚洲黄色大片 | 国产ar高清视频+视频 | 久久黄色一级视频 | 在线国产欧美 | 在线成人a毛片免费播放 | 久久99热不卡精品免费观看 | 最新久久精品 | 亚洲精品一区二区乱码在线观看 | 欧美日韩一区二区视频免费看 | 色综合久久加勒比高清88 |