Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <hibernate-configuration>
- <session-factory>
- <property name="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</property>
- <property name="hibernate.connection.driver_class">org.postgresql.Driver</property>
- <property name="hibernate.connection.url">jdbc:postgresql://localhost:5432/animal-clinic</property>
- <property name="hibernate.connection.username">postgres</property>
- <property name="hibernate.connection.password">pass</property>
- <property name="hibernate.connection.provider_class">org.hibernate.c3p0.internal.C3P0ConnectionProvider</property>
- <property name="hibernate.c3p0.min_size">7</property>
- <property name="hibernate.c3p0.max_size">53</property>
- <property name="hibernate.c3p0.timeout">100</property>
- <property name="hibernate.c3p0.max_statements">50</property>
- <property name="hibernate.c3p0.idle_test_period">1000</property>
- <property name="hibernate.c3p0.validate">true</property>
- <!-- List of XML mapping files -->
- <mapping resource="ru/lesson/models/users/Role.hbm.xml"/>
- <mapping resource="ru/lesson/models/users/User.hbm.xml"/>
- <mapping resource="ru/lesson/models/users/Message.hbm.xml"/>
- </session-factory>
- </hibernate-configuration>
- <hibernate-mapping>
- <class name="ru.lesson.models.users.User" table="users">
- <meta attribute="class-description">
- This class contains the user detail.
- </meta>
- <id name="id" type="int" column="uid">
- <generator class="identity"/>
- </id>
- <property name="login" column="login" type="string"/>
- <property name="email" column="email" type="string"/>
- <property name="password" column="password" type="string"/>
- <property name="name" column="name" type="string"/>
- <property name="surname" column="surname" type="string"/>
- <property name="fullname" column="fullname" type="string"/>
- <property name="sex" column="sex" type="string"/>
- <property name="phone_number" column="phone_number" type="string"/>
- <property name="city" column="city" type="string"/>
- <many-to-one name="role" lazy="false" column="role_id" class="ru.lesson.models.users.Role" cascade="save-update"/>
- <bag name="messages" table="messages" lazy="false" inverse="true" cascade="all">
- <key column="user_id" not-null="true"/>
- <one-to-many class="ru.lesson.models.users.Message"/>
- </bag>
- </class>
- </hibernate-mapping>
- <hibernate-mapping>
- <class name="ru.lesson.models.users.Message" table="messages">
- <meta attribute="class-description">
- This class contains the message of user.
- </meta>
- <id name="id" type="int" column="uid">
- <generator class="identity"/>
- </id>
- <many-to-one name="user" column="user_id" class="ru.lesson.models.users.User" cascade="all" insert="false" update="false"/>
- <many-to-one name="sender" column="sender_id" class="ru.lesson.models.users.User" cascade="all" insert="false" update="false"/>
- <property name="text" column="text" type="string"/>
- </class>
- </hibernate-mapping>
- <hibernate-mapping>
- <class name="ru.lesson.models.users.Role" table="roles">
- <meta attribute="class-description">
- This class contains the role detail.
- </meta>
- <id name="id" type="int" column="uid">
- <generator class="identity"/>
- </id>
- <property name="name" column="name" type="string"/>
- </class>
- </hibernate-mapping>
- package ru.lesson.models.users;
- import java.util.*;
- public class User extends Base{
- private String login;
- private String email;
- private String password;
- private String name;
- private String surname;
- private String fullname;
- private String sex;
- private String phone_number;
- private String city;
- private Role role;
- private List<Message> messages = new ArrayList<Message>();
- public User(){}
- public User(int id, String login, String email, String password, String name, String surname,
- String sex, String phone_number, String city){
- this.id = id;
- this.login = login;
- this.email = email;
- this.password = password;
- this.name = name;
- this.surname = surname;
- this.sex = sex;
- this.phone_number = phone_number;
- this.city = city;
- this.fullname = name + " " + surname;
- }
- public List<Message> getMessages() {
- return messages;
- }
- public void setMessages(List<Message> messages) {
- this.messages = messages;
- }
- public String getLogin() {
- return login;
- }
- public void setLogin(String login) {
- this.login = login;
- }
- public String getEmail() {
- return email;
- }
- public void setEmail(String email) {
- this.email = email;
- }
- public String getPassword() {
- return password;
- }
- public void setPassword(String password) {
- this.password = password;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public String getSurname() {
- return surname;
- }
- public void setSurname(String surname) {
- this.surname = surname;
- }
- public String getFullname() {
- return fullname;
- }
- public void setFullname(String fullname) {
- this.fullname = fullname;
- }
- public String getSex() {
- return sex;
- }
- public void setSex(String sex) {
- this.sex = sex;
- }
- public String getPhone_number() {
- return phone_number;
- }
- public void setPhone_number(String phone_number) {
- this.phone_number = phone_number;
- }
- public String getCity() {
- return city;
- }
- public void setCity(String city) {
- this.city = city;
- }
- public Role getRole() {
- return role;
- }
- public void setRole(Role role) {
- this.role = role;
- }
- @Override
- public String toString() {
- return "User{" +
- "login='" + login + ''' +
- ", email='" + email + ''' +
- ", password='" + password + ''' +
- ", name='" + name + ''' +
- ", surname='" + surname + ''' +
- ", fullname='" + fullname + ''' +
- ", sex='" + sex + ''' +
- ", phone_number='" + phone_number + ''' +
- ", city='" + city + ''' +
- ", role=" + role +
- ", messages=" + messages +
- '}';
- }
- }
- package ru.lesson.models.users;
- public class Message extends Base {
- private User user;
- private User sender;
- private String text;
- public Message(){}
- public Message(int id, User userToSend, User sender, String textMessage){
- this.user = userToSend;
- this.sender = sender;
- this.text = textMessage;
- }
- public User getUser() {
- return user;
- }
- public void setUser(User user) {
- this.user = user;
- }
- public User getSender() {
- return sender;
- }
- public void setSender(User sender) { this.sender = sender; }
- public String getText() {
- return text;
- }
- public void setText(String text) {
- this.text = text;
- }
- }
- package ru.lesson.models.users;
- public class Role extends Base {
- private String name;
- public Role(){}
- public Role(int id, String name){
- this.id = id;
- this.name = name;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- }
- package ru.lesson.models.users;
- public abstract class Base {
- protected int id;
- public int getId() {
- return id;
- }
- public void setId(int id) {
- this.id = id;
- }
- }
- package ru.lesson.store;
- import static org.junit.Assert.assertEquals;
- import static org.junit.Assert.assertNotNull;
- import java.util.ArrayList;
- import java.util.List;
- import org.junit.After;
- import org.junit.Before;
- import org.junit.Test;
- import org.junit.runner.RunWith;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.context.ApplicationContext;
- import org.springframework.context.support.ClassPathXmlApplicationContext;
- import org.springframework.test.context.ContextConfiguration;
- import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
- import org.springframework.test.context.web.WebAppConfiguration;
- import ru.lesson.models.users.Message;
- import ru.lesson.models.users.Role;
- import ru.lesson.models.users.User;
- @RunWith(SpringJUnit4ClassRunner.class)
- @ContextConfiguration(locations = {"classpath:spring-context.xml"})
- @WebAppConfiguration
- public class UserStorageTest {
- @Autowired
- private Storages storage;
- private int id;
- private int idSender;
- private int size;
- @Test
- public void testStorage(){
- try {
- Role role = new Role();
- role.setName("user");
- User user = new User(-1, "sanyaTest", "testYawik@mail.ru", "123456", "Sanya", "Testirovwik", "Man", "095434345", "Kharkov");
- user.setRole(role);
- User sender = new User(-1, "Sender911", "testSender@mail.ru", "123456", "Sanya", "Sender", "Man", "095434345", "Praga");
- sender.setRole(role);
- idSender = storage.userStorage.add(sender);
- id = storage.userStorage.add(user);
- user = storage.userStorage.get(id);
- assertEquals(id, user.getId());
- assertNotNull(user);
- assertEquals("sanyaTest", user.getLogin());
- assertEquals("testYawik@mail.ru", user.getEmail());
- assertEquals("123456", user.getPassword());
- assertEquals("Sanya", user.getName());
- assertEquals("Testirovwik", user.getSurname());
- assertEquals("Man", user.getSex());
- assertEquals("095434345", user.getPhone_number());
- assertEquals("Kharkov", user.getCity());
- size = storage.userStorage.values().size();
- user = new User(id, "sanyaTest1", "testYawik@mail.ru1", "1234561", "Sanya1", "Testirovwik1", "Man1", "0954343451", "Kharkov1");
- user.setRole(role);
- List<Message> messages = new ArrayList<Message>();
- Message message = new Message(-1,user,sender,"textTestJUNIt");
- messages.add(message);
- user.setMessages(messages);
- storage.userStorage.edit(user);
- user = storage.userStorage.get(id);
- assertEquals(1, storage.userStorage.get(id).getMessages().size());
- assertEquals(id, user.getId());
- assertNotNull(user);
- assertEquals("sanyaTest1", user.getLogin());
- assertEquals("testYawik@mail.ru1", user.getEmail());
- assertEquals("1234561", user.getPassword());
- assertEquals("Sanya1", user.getName());
- assertEquals("Testirovwik1", user.getSurname());
- assertEquals("Man1", user.getSex());
- assertEquals("0954343451", user.getPhone_number());
- assertEquals("Kharkov1", user.getCity());
- List<User> list = storage.userStorage.searchByID(id);
- assertNotNull(list.get(0));
- assertEquals(list.get(0).getId(), user.getId());
- user = storage.userStorage.findByAuth("sanyaTest1", "1234561");
- assertNotNull(user);
- list = storage.userStorage.searchByName("Sanya1 Testirovwik1");
- assertNotNull(list.get(0));
- //list = storage.searchByLogin(user.getLogin());
- //assertNotNull(list.get(0));
- }finally{
- /*storage.userStorage.delete(id);
- assertEquals(size-1, storage.userStorage.values().size());*/
- }
- }
- }
- org.springframework.dao.DataIntegrityViolationException: could not execute statement; SQL [n/a]; constraint [null]; nested exception is org.hibernate.exception.ConstraintViolationException: could not execute statement
- at org.springframework.orm.hibernate4.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:161)
- at org.springframework.orm.hibernate4.HibernateTemplate.doExecute(HibernateTemplate.java:343)
- at org.springframework.orm.hibernate4.HibernateTemplate.executeWithNativeSession(HibernateTemplate.java:308)
- at org.springframework.orm.hibernate4.HibernateTemplate.update(HibernateTemplate.java:644)
- at org.springframework.orm.hibernate4.HibernateTemplate.update(HibernateTemplate.java:639)
- at ru.lesson.store.UserStorage.edit(UserStorage.java:43)
- at ru.lesson.store.UserStorage.edit(UserStorage.java:19)
- at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
- at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
- at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
- at java.lang.reflect.Method.invoke(Method.java:497)
- at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317)
- at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)
- at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
- at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:98)
- at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:262)
- at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:95)
- at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
- at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207)
- at com.sun.proxy.$Proxy17.edit(Unknown Source)
- at ru.lesson.store.UserStorageTest.testStorage(UserStorageTest.java:64)
- at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
- at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
- at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
- at java.lang.reflect.Method.invoke(Method.java:497)
- at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
- at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
- at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
- at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
- at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:74)
- at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:83)
- at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:72)
- at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:233)
- at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:87)
- at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
- at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
- at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
- at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
- at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
- at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
- at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:71)
- at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
- at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:176)
- at org.junit.runner.JUnitCore.run(JUnitCore.java:157)
- at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69)
- at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:234)
- at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:74)
- at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
- at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
- at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
- at java.lang.reflect.Method.invoke(Method.java:497)
- at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)
- Caused by: org.hibernate.exception.ConstraintViolationException: could not execute statement
- at org.hibernate.exception.internal.SQLStateConversionDelegate.convert(SQLStateConversionDelegate.java:129)
- at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:49)
- at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:126)
- at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:112)
- at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:211)
- at org.hibernate.id.IdentityGenerator$GetGeneratedKeysDelegate.executeAndExtract(IdentityGenerator.java:96)
- at org.hibernate.id.insert.AbstractReturningDelegate.performInsert(AbstractReturningDelegate.java:58)
- at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3032)
- at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3558)
- at org.hibernate.action.internal.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:98)
- at org.hibernate.engine.spi.ActionQueue.execute(ActionQueue.java:492)
- at org.hibernate.engine.spi.ActionQueue.addResolvedEntityInsertAction(ActionQueue.java:197)
- at org.hibernate.engine.spi.ActionQueue.addInsertAction(ActionQueue.java:181)
- at org.hibernate.engine.spi.ActionQueue.addAction(ActionQueue.java:216)
- at org.hibernate.event.internal.AbstractSaveEventListener.addInsertAction(AbstractSaveEventListener.java:334)
- at org.hibernate.event.internal.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:289)
- at org.hibernate.event.internal.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:195)
- at org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:126)
- at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:209)
- at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:194)
- at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.performSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:114)
- at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:90)
- at org.hibernate.internal.SessionImpl.fireSaveOrUpdate(SessionImpl.java:684)
- at org.hibernate.internal.SessionImpl.saveOrUpdate(SessionImpl.java:676)
- at org.hibernate.engine.spi.CascadingActions$5.cascade(CascadingActions.java:235)
- at org.hibernate.engine.internal.Cascade.cascadeToOne(Cascade.java:350)
- at org.hibernate.engine.internal.Cascade.cascadeAssociation(Cascade.java:293)
- at org.hibernate.engine.internal.Cascade.cascadeProperty(Cascade.java:161)
- at org.hibernate.engine.internal.Cascade.cascadeCollectionElements(Cascade.java:379)
- at org.hibernate.engine.internal.Cascade.cascadeCollection(Cascade.java:319)
- at org.hibernate.engine.internal.Cascade.cascadeAssociation(Cascade.java:296)
- at org.hibernate.engine.internal.Cascade.cascadeProperty(Cascade.java:161)
- at org.hibernate.engine.internal.Cascade.cascade(Cascade.java:118)
- at org.hibernate.engine.internal.Cascade.cascade(Cascade.java:86)
- at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.cascadeOnUpdate(DefaultSaveOrUpdateEventListener.java:375)
- at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.performUpdate(DefaultSaveOrUpdateEventListener.java:349)
- at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.entityIsDetached(DefaultSaveOrUpdateEventListener.java:244)
- at org.hibernate.event.internal.DefaultUpdateEventListener.performSaveOrUpdate(DefaultUpdateEventListener.java:55)
- at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:90)
- at org.hibernate.internal.SessionImpl.fireUpdate(SessionImpl.java:739)
- at org.hibernate.internal.SessionImpl.update(SessionImpl.java:731)
- at org.hibernate.internal.SessionImpl.update(SessionImpl.java:726)
- at org.springframework.orm.hibernate4.HibernateTemplate$14.doInHibernate(HibernateTemplate.java:648)
- at org.springframework.orm.hibernate4.HibernateTemplate.doExecute(HibernateTemplate.java:340)
- ... 50 more
- Caused by: org.postgresql.util.PSQLException: ОШИБКА: нулевое значение в колонке "user_id" нарушает ограничение NOT NULL
- Подробности: Ошибочная строка содержит (12, textTestJUNIt, null, null).
- at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2103)
- at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1836)
- at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:257)
- at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:512)
- at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:388)
- at org.postgresql.jdbc2.AbstractJdbc2Statement.executeUpdate(AbstractJdbc2Statement.java:334)
- at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeUpdate(NewProxyPreparedStatement.java:147)
- at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:208)
- ... 89 more
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement