
Опытный
 
Профиль
Группа: Участник
Сообщений: 667
Регистрация: 23.1.2008
Где: Харьков
Репутация: нет Всего: 11
|
Есть форма логина, не могу сохранить ентити, Hibernate + Spring + patterns(DTO,DAO,Builder) выдает такую ошибку Код |
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.dao. DataIntegrityViolationException: could not insert: [jtforum.entites.User]; SQL [/* insert jtforum.entites.User */ insert into users (AVATAR_LINK, BANNED, CITY, COUNTRY_ID, EMAIL, FIRST_NAME, INTERESTS, INTERFACE_LANGUAGE_ID, JOB_POSITION, LAST_NAME, LAST_VISITED_DATE, NICK_NAME, NOTIFICATION_ON_PRIVATE_MESSAGES_ON, PHOTO_LINK, POST_NUMBER, RANK_ID, RATING, REGISTRATION_DATE, ROLE, SIGNATURE, SUMMARY, USER_PASSWORD) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]; constraint [null]; nested exception is org.hibernate.exception.ConstraintViolationException: could not insert: [jtforum.entites.User] org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:656) org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:560) javax.servlet.http.HttpServlet.service(HttpServlet.java:637) javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
root cause
org.springframework.dao.DataIntegrityViolationException: could not insert: [jtforum.entites.User]; SQL [/* insert jtforum.entites.User */ insert into users (AVATAR_LINK, BANNED, CITY, COUNTRY_ID, EMAIL, FIRST_NAME, INTERESTS, INTERFACE_LANGUAGE_ID, JOB_POSITION, LAST_NAME, LAST_VISITED_DATE, NICK_NAME, NOTIFICATION_ON_PRIVATE_MESSAGES_ON, PHOTO_LINK, POST_NUMBER, RANK_ID, RATING, REGISTRATION_DATE, ROLE, SIGNATURE, SUMMARY, USER_PASSWORD) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]; constraint [null]; nested exception is org.hibernate.exception.ConstraintViolationException: could not insert: [jtforum.entites.User] org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:637) org.springframework.orm.hibernate3.HibernateAccessor.convertHibernateAccessException(HibernateAccessor.java:412) org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:411) org.springframework.orm.hibernate3.HibernateTemplate.executeWithNativeSession(HibernateTemplate.java:374) org.springframework.orm.hibernate3.HibernateTemplate.save(HibernateTemplate.java:683) jtforum.dao.UserDAO.save(UserDAO.java:20) ru.jt.forum.controller.service.UserService.saveUser(UserService.java:27) ru.jt.forum.web.controller.RegistrationController.postRegisterPage(RegistrationController.java:87) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) java.lang.reflect.Method.invoke(Method.java:597) org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:176) org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:426) org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:414) org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:790) org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719) org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644) org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:560) javax.servlet.http.HttpServlet.service(HttpServlet.java:637) javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
root cause
org.hibernate.exception.ConstraintViolationException: could not insert: [jtforum.entites.User] org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:71) org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43) org.hibernate.id.insert.AbstractReturningDelegate.performInsert(AbstractReturningDelegate.java:40) org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2158) org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2638) org.hibernate.action.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:48) org.hibernate.engine.ActionQueue.execute(ActionQueue.java:250) org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:298) org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:181) org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:107) org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:187) org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:33) org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:172) org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:27) org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:70) org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:535) org.hibernate.impl.SessionImpl.save(SessionImpl.java:523) org.hibernate.impl.SessionImpl.save(SessionImpl.java:519) org.springframework.orm.hibernate3.HibernateTemplate$12.doInHibernate(HibernateTemplate.java:686) org.springframework.orm.hibernate3.HibernateTemplate$12.doInHibernate(HibernateTemplate.java:1) org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:406) org.springframework.orm.hibernate3.HibernateTemplate.executeWithNativeSession(HibernateTemplate.java:374) org.springframework.orm.hibernate3.HibernateTemplate.save(HibernateTemplate.java:683) jtforum.dao.UserDAO.save(UserDAO.java:20) ru.jt.forum.controller.service.UserService.saveUser(UserService.java:27) ru.jt.forum.web.controller.RegistrationController.postRegisterPage(RegistrationController.java:87) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) java.lang.reflect.Method.invoke(Method.java:597) org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:176) org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:426) org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:414) org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:790) org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719) org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644) org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:560) javax.servlet.http.HttpServlet.service(HttpServlet.java:637) javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
root cause
com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Column 'EMAIL' cannot be null sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) java.lang.reflect.Constructor.newInstance(Constructor.java:513) com.mysql.jdbc.Util.handleNewInstance(Util.java:409) com.mysql.jdbc.Util.getInstance(Util.java:384) com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1041) com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3566) com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3498) com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1959) com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2113) com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2568) com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2113) com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2409) com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2327) com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2312) org.apache.commons.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:102) org.apache.commons.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:102) org.hibernate.id.IdentityGenerator$GetGeneratedKeysDelegate.executeAndExtract(IdentityGenerator.java:73) org.hibernate.id.insert.AbstractReturningDelegate.performInsert(AbstractReturningDelegate.java:33) org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2158) org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2638) org.hibernate.action.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:48) org.hibernate.engine.ActionQueue.execute(ActionQueue.java:250) org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:298) org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:181) org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:107) org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:187) org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:33) org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:172) org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:27) org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:70) org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:535) org.hibernate.impl.SessionImpl.save(SessionImpl.java:523) org.hibernate.impl.SessionImpl.save(SessionImpl.java:519) org.springframework.orm.hibernate3.HibernateTemplate$12.doInHibernate(HibernateTemplate.java:686) org.springframework.orm.hibernate3.HibernateTemplate$12.doInHibernate(HibernateTemplate.java:1) org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:406) org.springframework.orm.hibernate3.HibernateTemplate.executeWithNativeSession(HibernateTemplate.java:374) org.springframework.orm.hibernate3.HibernateTemplate.save(HibernateTemplate.java:683) jtforum.dao.UserDAO.save(UserDAO.java:20) ru.jt.forum.controller.service.UserService.saveUser(UserService.java:27) ru.jt.forum.web.controller.RegistrationController.postRegisterPage(RegistrationController.java:87) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) java.lang.reflect.Method.invoke(Method.java:597) org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:176) org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:426) org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:414) org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:790) org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719) org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644) org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:560) javax.servlet.http.HttpServlet.service(HttpServlet.java:637) javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
|
User Код |
public class User implements Serializable {
private static final long serialVersionUID = 4;
public enum Role {UserRole, ModerRole, AdminRole}
private long id;
private int role;
private String nickName;
private String email;
private String firstName;
private String lastName;
private String userPassword;
private Timestamp registrationDate;
private Timestamp lastVisitedDate;
private String avatarLink;
private String photoLink;
private Country countryId; private Language interfaceLanguageId;
private String city;
private int rating;
private String summary;
private String interests;
private String jobPosition;
private int postNumber;
private String signature;
private Rank rankId;
private byte banned;
private byte notificationOnPrivateMessagesOn;
public long getId() { return id; }
public void setId(long id) { this.id = id; }
public int getRole() { return role; }
public void setRole(int role) { this.role = role; }
public String getNickName() { return nickName; }
public void setNickName(String nickName) { this.nickName = nickName; }
public String getEmail() { return email; }
public void setEmail(String email) { this.email = email; }
public String getFirstName() { return firstName; }
public void setFirstName(String firstName) { this.firstName = firstName; }
public String getLastName() { return lastName; }
public void setLastName(String lastName) { this.lastName = lastName; }
public String getUserPassword() { return userPassword; }
public void setUserPassword(String userPassword) { this.userPassword = userPassword; }
public Timestamp getRegistrationDate() { return registrationDate; }
public void setRegistrationDate(Timestamp registrationDate) { this.registrationDate = registrationDate; }
public Timestamp getLastVisitedDate() { return lastVisitedDate; }
public void setLastVisitedDate(Timestamp lastVisitedDate) { this.lastVisitedDate = lastVisitedDate; }
public String getAvatarLink() { return avatarLink; }
public void setAvatarLink(String avatarLink) { this.avatarLink = avatarLink; }
public String getPhotoLink() { return photoLink; }
public void setPhotoLink(String photoLink) { this.photoLink = photoLink; }
public Country getCountryId() { return countryId; }
public void setCountryId(Country countryId) { this.countryId = countryId; }
public Language getInterfaceLanguageId() { return interfaceLanguageId; }
public void setInterfaceLanguageId(Language interfaceLanguageId) { this.interfaceLanguageId = interfaceLanguageId; }
public String getCity() { return city; }
public void setCity(String city) { this.city = city; }
public int getRating() { return rating; }
public void setRating(int rating) { this.rating = rating; }
public String getSummary() { return summary; }
public void setSummary(String summary) { this.summary = summary; }
public String getInterests() { return interests; }
public void setInterests(String interests) { this.interests = interests; }
public String getJobPosition() { return jobPosition; }
public void setJobPosition(String jobPosition) { this.jobPosition = jobPosition; }
public int getPostNumber() { return postNumber; }
public void setPostNumber(int postNumber) { this.postNumber = postNumber; }
public String getSignature() { return signature; }
public void setSignature(String signature) { this.signature = signature; }
public Rank getRankId() { return rankId; }
public void setRankId(Rank rankId) { this.rankId = rankId; }
public byte getBanned() { return banned; }
public void setBanned(byte banned) { this.banned = banned; }
public byte getNotificationOnPrivateMessagesOn() { return notificationOnPrivateMessagesOn; }
public void setNotificationOnPrivateMessagesOn(byte notificationOnPrivateMessagesOn) { this.notificationOnPrivateMessagesOn = notificationOnPrivateMessagesOn; }
@Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false;
User that = (User) o;
if (id != that.id) return false;
return true; }
@Override public int hashCode() { return (int) (id ^ (id >>> 32)); }
|
mapping Код |
<hibernate-mapping> <class name="jtforum.entites.User" table="users"> <id name="id" type="long" column="id"> <generator class="native" /> </id> <property name="avatarLink" type="string" column="AVATAR_LINK" length="512" /> <property name="banned" type="byte" column="BANNED" /> <property name="city" type="string" column="CITY" length="64" /> <many-to-one name="countryId" class="jtforum.entites.Country" column="COUNTRY_ID" cascade="all" not-null="true" /> <property name="email" type="string" column="EMAIL" length="30" /> <property name="firstName" type="string" column="FIRST_NAME" length="30" /> <property name="interests" type="string" column="INTERESTS" length="256" /> <many-to-one name="interfaceLanguageId" class="jtforum.entites.Language" column="INTERFACE_LANGUAGE_ID" cascade="all" not-null="true" /> <property name="jobPosition" type="string" column="JOB_POSITION" length="64"/> <property name="lastName" type="string" column="LAST_NAME" length="30" /> <property name="lastVisitedDate" type="timestamp" column="LAST_VISITED_DATE" /> <property name="nickName" type="string" column="NICK_NAME" length="50" /> <property name="notificationOnPrivateMessagesOn" type="byte" column="NOTIFICATION_ON_PRIVATE_MESSAGES_ON" /> <property name="photoLink" type="string" column="PHOTO_LINK" length="512" /> <property name="postNumber" type="int" column="POST_NUMBER" /> <many-to-one name="rankId" class="jtforum.entites.Rank" column="RANK_ID" cascade="all" not-null="true" /> <property name="rating" type="int" column="RATING" /> <property name="registrationDate" type="timestamp" column="REGISTRATION_DATE" /> <property name="role" type="int" column="ROLE" /> <property name="signature" type="string" column="SIGNATURE" length="512" /> <property name="summary" type="string" column="SUMMARY" length="4096" /> <property name="userPassword" type="string" column="USER_PASSWORD" length="50" />
</class> </hibernate-mapping>
|
User dao Код | public class UserDAO extends HibernateDaoSupport implements IUserDAO {
@Override public void save(User user) { getHibernateTemplate().save(user); }
@Override public User get(int id) { return (User)getHibernateTemplate().get(User.class,id); } }
|
Web-Controller Код | @Controller @RequestMapping("/user") public class RegistrationController {
@Autowired private IUserService userService;
@Autowired private ICountryService countryService;
@Autowired private ILanguageService languageService;
@Autowired private IRankService rankService;
@ModelAttribute("rank") public Map<Long, Rank> populateRank(){ return rankService.getMap(); }
@ModelAttribute("countryList") public Map<Long, Country> populateCountryList(){ return countryService.getMap(); }
@ModelAttribute("languageList") public Map<Long, Language> populateLanguageList(){ return languageService.getMap(); }
@RequestMapping(method = RequestMethod.GET) public ModelAndView registerPage() { ModelAndView mav = new ModelAndView("register"); mav.addObject("userForm", new UserDTO()); return mav; }
@RequestMapping(method = RequestMethod.POST) public ModelAndView postRegisterPage(@ModelAttribute("userForm") UserDTO userDTO){ UserBuilder userBuilder = new UserBuilder(); userBuilder.buildUser(); userBuilder.buildMainData(userDTO.getFirstName(),userDTO.getLastName(),userDTO.getNickName(), userDTO.getUserPassword(),userDTO.getCity()); userBuilder.buildDescriptions(userDTO.getInterests(),userDTO.getSummary(),userDTO.getSignature(),userDTO.getJobPosition()); userBuilder.buildLinks(userDTO.getAvatarLink(),userDTO.getPhotoLink()); userBuilder.buildRelation(countryService.getMap().get(userDTO.getCountryId()),languageService.getMap().get(userDTO.getInterfaceLanguageId()), rankService.getMap().get(userDTO.getRankId())); userBuilder.buildDates(); userBuilder.buildDefaultData(); userService.saveUser(userBuilder.getUser()); return new ModelAndView("success"); }
}
|
во время дебага не могу найти ошибку :( заполняются вроде все поля, айди я явно не присваивал ентити потому что делает это хибер, куда рыть? если надо могу скинуть весь проект Вот uml database Это сообщение отредактировал(а) Christoph - 2.1.2011, 18:53
Присоединённый файл ( Кол-во скачиваний: 2 )
datasource_DataSource.uml 2,29 Kb
|