powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / трудности в написании spring приложения
3 сообщений из 3, страница 1 из 1
трудности в написании spring приложения
    #34288930
serjik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Парни, прошу помощи. Делаю приложение spring, hiberhate. Пытаюсь сделать добавление юзеров.
Есть две таблицы company и users, связь один ко многим.
таблица company
CID (PK, numeric(18,0), not null)
CompanyName (varchar(50), not null)

таблица users
UID (PK, numeric(18,0), not null)
UserName (varchar(50), not null)
CID (FK, numeric(18,0), not null)
Добавление компаний работает, а добавление юзеров бьет ошибку. походу неможет записать значение в users.CID
Непонимаю почему эта ошибка вылазит.
Ума неприложу, чего я неправильно сделал. Может в маппинге неточность или в jspшке это поле неправильно описал.
Вот эта ошибка:
Код: plaintext
1.
2.
Data access failure: Hibernate operation: could not insert: [demo.model.User]; SQL [insert into WebminDB.dbo.users (UserName, CID, UID) values (?, ?, ?)]; Cannot insert the value  NULL  into column 'CID', table 'WebminDB.dbo.users'; column does not allow nulls. INSERT fails.; nested exception is com.microsoft.sqlserver.jdbc.SQLServerException: Cannot insert the value  NULL  into column 'CID', table 'WebminDB.dbo.users'; column does not allow nulls. INSERT fails.
org.springframework.dao.DataIntegrityViolationException: Hibernate operation: could not insert: [demo.model.User]; SQL [insert into WebminDB.dbo.users (UserName, CID, UID) values (?, ?, ?)]; Cannot insert the value  NULL  into column 'CID', table 'WebminDB.dbo.users'; column does not allow nulls. INSERT fails.; nested exception is com.microsoft.sqlserver.jdbc.SQLServerException: Cannot insert the value  NULL  into column 'CID', table 'WebminDB.dbo.users'; column does not allow nulls. INSERT fails. com.microsoft.sqlserver.jdbc.SQLServerException: Cannot insert the value  NULL  into column 'CID', table 'WebminDB.dbo.users'; column does not allow nulls. INSERT fails. at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(Unknown Source) at com.microsoft.sqlserver.jdbc.IOBuffer.processPackets(Unknown Source) at com.microsoft.sqlserver.jdbc.SQLServerStatement.sendExecute(Unknown Source) at com.microsoft.sqlserver.jdbc.SQLServerStatement.doExecuteUpdate(Unknown Source) at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.executeUpdate(Unknown Source) at org.hibernate.jdbc.NonBatchingBatcher.addToBatch(NonBatchingBatcher.java: 22 ) at org.hibernate.persister.entity.BasicEntityPersister.insert(BasicEntityPersister.java: 1853 ) at org.hibernate.persister.entity.BasicEntityPersister.insert(BasicEntityPersister.java: 2200 ) at org.hibernate.action.EntityInsertAction.execute(EntityInsertAction.java: 46 ) at org.hibernate.engine.ActionQueue.execute(ActionQueue.java: 239 ) at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java: 223 ) at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java: 136 ) at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java: 274 ) at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java: 27 ) at org.hibernate.impl.SessionImpl.flush(SessionImpl.java: 730 ) at org.springframework.orm.hibernate3.HibernateAccessor.flushIfNecessary(HibernateAccessor.java: 394 ) at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java: 367 ) at org.springframework.orm.hibernate3.HibernateTemplate.save(HibernateTemplate.java: 614 ) at demo.hibernate.UserDaoHibernate.addUser(UserDaoHibernate.java: 12 ) at demo.service.UserServiceImpl.addUser(UserServiceImpl.java: 9 ) at demo.web.AddUserController.doSubmitAction(AddUserController.java: 37 ) at org.springframework.web.servlet.mvc.SimpleFormController.onSubmit(SimpleFormController.java: 415 ) at org.springframework.web.servlet.mvc.SimpleFormController.onSubmit(SimpleFormController.java: 382 ) at org.springframework.web.servlet.mvc.SimpleFormController.onSubmit(SimpleFormController.java: 356 ) at org.springframework.web.servlet.mvc.SimpleFormController.processFormSubmission(SimpleFormController.java: 258 ) at org.springframework.web.servlet.mvc.AbstractFormController.handleRequestInternal(AbstractFormController.java: 249 ) at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java: 153 ) at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java: 44 ) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java: 723 ) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java: 663 ) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java: 394 ) at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java: 358 ) at javax.servlet.http.HttpServlet.service(HttpServlet.java: 709 ) at javax.servlet.http.HttpServlet.service(HttpServlet.java: 802 ) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java: 252 ) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java: 173 ) at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java: 75 ) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java: 77 ) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java: 202 ) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java: 173 ) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java: 213 ) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java: 178 ) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java: 126 ) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java: 105 ) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java: 107 ) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java: 148 ) at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java: 833 ) at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java: 639 ) at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java: 1285 ) at java.lang.Thread.run(Thread.java: 595 )
Вот jspшка с формой для добавления юзера
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
<%@ include file="/WEB-INF/jsp/includes.jsp" %>
<%@ page contentType="text/html; charset=windows-1251" %>
   <form method="POST">
    <table border="0" cellspacing="5" cellpadding="0">
      <tr><td valign="middle" align="left">
        <b>CID: </b> 
      </td><td valign="middle" align="left">
       <spring:bind path="command.company">
        <select name="companyId">
          <c:forEach items="${companys}" var="company">
              <OPTION value="<c:out value="${company.id}"/>">
                <c:out value="${company.companyName}"/>                
              </OPTION>               
         </c:forEach>         
        </SELECT>         
      </spring:bind>
      </td>
      </tr>     
      <tr>
        <td valign="middle" align="left">
          <b>UserName:</b> 
        </td>
        <td valign="middle" align="left">
        <spring:bind path="command.userName">  
          <input type="text" maxlength="50" name="userName"><br>
        </spring:bind>  
      </td>
      </tr>        
      <tr>
        <td colspan="2" align="center">
          <input type="submit" value="Create">      
        </td>
      </tr>
    </table>
    </form>
В контроллере я передаю список компаний для использования в форме

Код: plaintext
1.
2.
3.
4.
5.
 protected  Map referenceData(HttpServletRequest request)  throws  ServletException, NullPointerException {
        Map<String, Collection<?>> refData =  new  HashMap<String, Collection<?>>();
        refData.put("companys",  this .companyService.getCompanys());
         return  refData;
}
метод getCompanys
Код: plaintext
1.
2.
3.
 public  Collection getCompanys()  throws  DataAccessException {
         return  getHibernateTemplate().find("from Company company order by company.companyName");
}
а это маппинг user.hbm.xml
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping  PUBLIC  "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping auto- import ="true"  default -lazy="false">
    < class  name="demo.model.User" table="users" schema="dbo" catalog="WebminDB">
        <id name="id" column="UID">
            <generator  class ="increment"/>
        </id>
        <property name="userName" column="UserName"/>        
        <many-to-one name="company" column="CID"  class ="demo.model.Company"/>        
    </ class >
</hibernate-mapping>
маппинг company.hbm.xml

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping  PUBLIC  "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping auto- import ="true"  default -lazy="false">
    < class  name="demo.model.Company" table="company" schema="dbo" catalog="WebminDB">
       <id name="id" column="CID">
            <generator  class ="increment"/>
        </id>
        <property name="companyName" column="CompanyName"/>                
        <set name="usersInternal" inverse="true" cascade="all">
            <key column="CID"/>
            <one-to-many  class ="demo.model.User"/>
        </set>               
    </ class >
</hibernate-mapping>

...
Рейтинг: 0 / 0
трудности в написании spring приложения
    #34289542
expp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот тынц например. рекомендации те же.

у вас же спринг всё по буквами написал что к чему
...
Рейтинг: 0 / 0
трудности в написании spring приложения
    #34289805
serjik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
exppвот тынц например. рекомендации те же.
у вас же спринг всё по буквами написал что к чему
В логе написано, что в поле CID неможет записать значение null, но почему?
Вот тут атрибут company command обьекта, по идее через него должно записыватся значение company.id в поле CID таблицы User.
я проверил <c:out value="${company.id}"/> не null.
Но я неуверен, что тут правильно сделал, для занесения id выбраной компании в поле cid таблицы user.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
<spring:bind path="command.company">
        <select name="companyId">
          <c:forEach items="${companys}" var="company">
              <OPTION value="<c:out value="${company.id}"/>">
                <c:out value="${company.companyName}"/>                
              </OPTION>               
         </c:forEach>         
        </SELECT>         
      </spring:bind>

И кстати <select name="companyId"> должно иметь такое же название как command.company или неважно?
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / трудности в написании spring приложения
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]