Форум программистов, компьютерный форум, киберфорум
Java: Spring, Spring Boot
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
39 / 28 / 8
Регистрация: 14.04.2012
Сообщений: 249

Ошибка в UserServiceTest (spring data jpa)

19.11.2016, 13:32. Показов 2731. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Использую spring data jpa. При написании теста для UserService возникает ошибка. Не пойму как исправить.


spring-config.xml

Кликните здесь для просмотра всего текста
XML
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:jpa="http://www.springframework.org/schema/data/jpa"
       xmlns:jdbc="http://www.springframework.org/schema/jdbc" xmlns:p="http://www.springframework.org/schema/p"
       xsi:schemaLocation="http://www.springframework.org/schema/beans [url]http://www.springframework.org/schema/beans/spring-beans.xsd[/url]
       [url]http://www.springframework.org/schema/tx[/url] [url]http://www.springframework.org/schema/tx/spring-tx.xsd[/url] [url]http://www.springframework.org/schema/context[/url] [url]http://www.springframework.org/schema/context/spring-context.xsd[/url] [url]http://www.springframework.org/schema/data/jpa[/url] [url]http://www.springframework.org/schema/data/jpa/spring-jpa.xsd[/url] [url]http://www.springframework.org/schema/jdbc[/url] http://www.springframework.org/schema/jdbc/spring-jdbc.xsd">
 
 
    <!--@Transaction annotation support -->
    <tx:annotation-driven transaction-manager="transactionManager"/>
 
    <!--Обеспечивает работу с транзакциями в Spring -->
    <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
        <property name="entityManagerFactory" ref="emf"/>
    </bean>
 
    <!-- EntityManagerFactory -->
    <bean id="emf" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <!--Поставщик данных - hibernate-->
        <property name="jpaVendorAdapter">
            <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"
                  p:showSql="true">
            </bean>
        </property>
 
        <!--<property name="jpaProperties">-->
            <!--<props>-->
                <!--<prop key="hibernate.dialect">org.hibernate.dialect.PostgreSQL9Dialect</prop>-->
                <!--<prop key="javax.persistence.schema-generation.database.action">create</prop>-->
                <!--<prop key="hibernate.show_sql">true</prop>-->
            <!--</props>-->
        <!--</property>-->
 
        <!--поиск сущностей в этом пакете-->
        <property name="packagesToScan"
                  value="model"/>
    </bean>
 
    <!-- Datasource. Источник данных - база PostgresSQL -->
    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="org.postgresql.Driver" />
        <property name="url" value="jdbc:postgresql://localhost:5432/electronSun" />
        <property name="username" value="user" />
        <property name="password" value="password" />
    </bean>
 
    <!--Activates various annotations to be detected in bean classes: Spring's @Required and @Autowired and so on-->
    <context:annotation-config/>
 
    <!--Scanning components in base-package (look for annotations) -->
    <context:component-scan base-package="java"/>
 
    <!-- Need for Repository abstraction -->
    <jpa:repositories base-package="repository.datajpa" entity-manager-factory-ref="emf"
                      transaction-manager-ref="transactionManager"/>
    <context:component-scan base-package="repository.datajpa"/>
 
    <!--Service abstraction-->
    <context:component-scan base-package="service"/>
 
</beans>


UserServiceTest

Кликните здесь для просмотра всего текста
Java
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
36
37
38
39
40
41
42
43
package service;
 
import model.Role;
import model.User;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
 
import java.util.Collections;
 
import static org.hamcrest.Matchers.is;
import static org.hamcrest.Matchers.notNullValue;
import static org.junit.Assert.assertThat;
 
/**
 * Created by Александр on 19.11.2016.
 */
@ContextConfiguration({
        "classpath:spring/spring-config.xml",
        "classpath:spring/spring-mvc.xml"
})
@RunWith(SpringJUnit4ClassRunner.class)
public class UserServiceTest {
    private static final Logger LOG = LoggerFactory.getLogger(UserServiceTest.class);
 
    @Autowired
    protected UserService service;
 
 
    @Test
    public void testSave() throws Exception {
        User newUser = new User(null, "New", "new@gmail.com", "newPass", true, Collections.singleton(Role.ROLE_USER), "firstName","LastName", "adress");
        User created = service.save(newUser);
        newUser.setId(created.getId());
        assertThat(newUser.getId(), is(notNullValue()));
 
    }
 
}


Ошибка такая

Кликните здесь для просмотра всего текста
org.springframework.orm.jpa.JpaSystemExc eption: could not extract ResultSet; nested exception is org.hibernate.exception.GenericJDBCExcep tion: could not extract ResultSet

at org.springframework.orm.jpa.vendor.Hiber nateJpaDialect.convertHibernateAccessExc eption(HibernateJpaDialect.java:333)
at org.springframework.orm.jpa.vendor.Hiber nateJpaDialect.translateExceptionIfPossi ble(HibernateJpaDialect.java:244)
at org.springframework.orm.jpa.AbstractEnti tyManagerFactoryBean.translateExceptionI fPossible(AbstractEntityManagerFactoryBe an.java:491)
at org.springframework.dao.support.ChainedP ersistenceExceptionTranslator.translateE xceptionIfPossible(ChainedPersistenceExc eptionTranslator.java:59)
at org.springframework.dao.support.DataAcce ssUtils.translateIfNecessary(DataAccessU tils.java:213)
at org.springframework.dao.support.Persiste nceExceptionTranslationInterceptor.invok e(PersistenceExceptionTranslationInterce ptor.java:147)
at org.springframework.aop.framework.Reflec tiveMethodInvocation.proceed(ReflectiveM ethodInvocation.java:179)
at org.springframework.data.jpa.repository. support.CrudMethodMetadataPostProcessor$ CrudMethodMetadataPopulatingMethodInterc eptor.invoke(CrudMethodMetadataPostProce ssor.java:133)
at org.springframework.aop.framework.Reflec tiveMethodInvocation.proceed(ReflectiveM ethodInvocation.java:179)
at org.springframework.aop.interceptor.Expo seInvocationInterceptor.invoke(ExposeInv ocationInterceptor.java:92)
at org.springframework.aop.framework.Reflec tiveMethodInvocation.proceed(ReflectiveM ethodInvocation.java:179)
at org.springframework.aop.framework.JdkDyn amicAopProxy.invoke(JdkDynamicAopProxy.j ava:213)
at com.sun.proxy.$Proxy54.save(Unknown Source)
at repository.datajpa.DataJpaUserRepository Impl.save(DataJpaUserRepositoryImpl.java :23)
at service.UserServiceImpl.save(UserService Impl.java:24)
at service.UserServiceTest.testSave(UserSer viceTest.java:37)
at sun.reflect.NativeMethodAccessorImpl.inv oke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.inv oke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl .invoke(DelegatingMethodAccessorImpl.jav a:43)
at java.lang.reflect.Method.invoke(Method.j ava:498)
at org.junit.runners.model.FrameworkMethod$ 1.runReflectiveCall(FrameworkMethod.java :50)
at org.junit.internal.runners.model.Reflect iveCallable.run(ReflectiveCallable.java: 12)
at org.junit.runners.model.FrameworkMethod. invokeExplosively(FrameworkMethod.java:4 7)
at org.junit.internal.runners.statements.In vokeMethod.evaluate(InvokeMethod.java:17 )
at org.springframework.test.context.junit4. statements.RunBeforeTestMethodCallbacks. evaluate(RunBeforeTestMethodCallbacks.ja va:75)
at org.springframework.test.context.junit4. statements.RunAfterTestMethodCallbacks.e valuate(RunAfterTestMethodCallbacks.java :86)
at org.springframework.test.context.junit4. statements.SpringRepeat.evaluate(SpringR epeat.java:84)
at org.junit.runners.ParentRunner.runLeaf(P arentRunner.java:325)
at org.springframework.test.context.junit4. SpringJUnit4ClassRunner.runChild(SpringJ Unit4ClassRunner.java:252)
at org.springframework.test.context.junit4. SpringJUnit4ClassRunner.runChild(SpringJ Unit4ClassRunner.java:94)
at org.junit.runners.ParentRunner$3.run(Par entRunner.java:290)
at org.junit.runners.ParentRunner$1.schedul e(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildr en(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$00 0(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluat e(ParentRunner.java:268)
at org.springframework.test.context.junit4. statements.RunBeforeTestClassCallbacks.e valuate(RunBeforeTestClassCallbacks.java :61)
at org.springframework.test.context.junit4. statements.RunAfterTestClassCallbacks.ev aluate(RunAfterTestClassCallbacks.java:7 0)
at org.junit.runners.ParentRunner.run(Paren tRunner.java:363)
at org.springframework.test.context.junit4. SpringJUnit4ClassRunner.run(SpringJUnit4 ClassRunner.java:191)
at org.junit.runner.JUnitCore.run(JUnitCore .java:137)
at com.intellij.junit4.JUnit4IdeaTestRunner .startRunnerWithArgs(JUnit4IdeaTestRunne r.java:117)
at com.intellij.junit4.JUnit4IdeaTestRunner .startRunnerWithArgs(JUnit4IdeaTestRunne r.java:42)
at com.intellij.rt.execution.junit.JUnitSta rter.prepareStreamsAndStart(JUnitStarter .java:262)
at com.intellij.rt.execution.junit.JUnitSta rter.main(JUnitStarter.java:84)
at sun.reflect.NativeMethodAccessorImpl.inv oke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.inv oke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl .invoke(DelegatingMethodAccessorImpl.jav a:43)
at java.lang.reflect.Method.invoke(Method.j ava:498)
at com.intellij.rt.execution.application.Ap pMain.main(AppMain.java:147)
Caused by: org.hibernate.exception.GenericJDBCExcep tion: could not extract ResultSet
at org.hibernate.exception.internal.Standar dSQLExceptionConverter.convert(StandardS QLExceptionConverter.java:47)
at org.hibernate.engine.jdbc.spi.SqlExcepti onHelper.convert(SqlExceptionHelper.java :111)
at org.hibernate.engine.jdbc.spi.SqlExcepti onHelper.convert(SqlExceptionHelper.java :97)
at org.hibernate.engine.jdbc.internal.Resul tSetReturnImpl.extract(ResultSetReturnIm pl.java:79)
at org.hibernate.id.enhanced.SequenceStruct ure$1.getNextValue(SequenceStructure.jav a:96)
at org.hibernate.id.enhanced.NoopOptimizer. generate(NoopOptimizer.java:40)
at org.hibernate.id.enhanced.SequenceStyleG enerator.generate(SequenceStyleGenerator .java:412)
at org.hibernate.event.internal.AbstractSav eEventListener.saveWithGeneratedId(Abstr actSaveEventListener.java:105)
at org.hibernate.jpa.event.internal.core.Jp aPersistEventListener.saveWithGeneratedI d(JpaPersistEventListener.java:67)
at org.hibernate.event.internal.DefaultPers istEventListener.entityIsTransient(Defau ltPersistEventListener.java:189)
at org.hibernate.event.internal.DefaultPers istEventListener.onPersist(DefaultPersis tEventListener.java:132)
at org.hibernate.event.internal.DefaultPers istEventListener.onPersist(DefaultPersis tEventListener.java:58)
at org.hibernate.internal.SessionImpl.fireP ersist(SessionImpl.java:762)
at org.hibernate.internal.SessionImpl.persi st(SessionImpl.java:742)
at org.hibernate.internal.SessionImpl.persi st(SessionImpl.java:747)
at sun.reflect.NativeMethodAccessorImpl.inv oke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.inv oke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl .invoke(DelegatingMethodAccessorImpl.jav a:43)
at java.lang.reflect.Method.invoke(Method.j ava:498)
at org.springframework.orm.jpa.SharedEntity ManagerCreator$SharedEntityManagerInvoca tionHandler.invoke(SharedEntityManagerCr eator.java:298)
at com.sun.proxy.$Proxy48.persist(Unknown Source)
at org.springframework.data.jpa.repository. support.SimpleJpaRepository.save(SimpleJ paRepository.java:506)
at sun.reflect.NativeMethodAccessorImpl.inv oke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.inv oke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl .invoke(DelegatingMethodAccessorImpl.jav a:43)
at java.lang.reflect.Method.invoke(Method.j ava:498)
at org.springframework.data.repository.core .support.RepositoryFactorySupport$QueryE xecutorMethodInterceptor.executeMethodOn (RepositoryFactorySupport.java:503)
at org.springframework.data.repository.core .support.RepositoryFactorySupport$QueryE xecutorMethodInterceptor.doInvoke(Reposi toryFactorySupport.java:488)
at org.springframework.data.repository.core .support.RepositoryFactorySupport$QueryE xecutorMethodInterceptor.invoke(Reposito ryFactorySupport.java:460)
at org.springframework.aop.framework.Reflec tiveMethodInvocation.proceed(ReflectiveM ethodInvocation.java:179)
at org.springframework.data.projection.Defa ultMethodInvokingMethodInterceptor.invok e(DefaultMethodInvokingMethodInterceptor .java:61)
at org.springframework.aop.framework.Reflec tiveMethodInvocation.proceed(ReflectiveM ethodInvocation.java:179)
at org.springframework.transaction.intercep tor.TransactionInterceptor$1.proceedWith Invocation(TransactionInterceptor.java:9 9)
at org.springframework.transaction.intercep tor.TransactionAspectSupport.invokeWithi nTransaction(TransactionAspectSupport.ja va:280)
at org.springframework.transaction.intercep tor.TransactionInterceptor.invoke(Transa ctionInterceptor.java:96)
at org.springframework.aop.framework.Reflec tiveMethodInvocation.proceed(ReflectiveM ethodInvocation.java:179)
at org.springframework.dao.support.Persiste nceExceptionTranslationInterceptor.invok e(PersistenceExceptionTranslationInterce ptor.java:136)
... 43 more
Caused by: org.postgresql.util.PSQLException: ОШИБКА: в транзакции в режиме "только чтение" нельзя выполнить nextval()
at org.postgresql.core.v3.QueryExecutorImpl .receiveErrorResponse(QueryExecutorImpl. java:2458)
at org.postgresql.core.v3.QueryExecutorImpl .processResults(QueryExecutorImpl.java:2 158)
at org.postgresql.core.v3.QueryExecutorImpl .execute(QueryExecutorImpl.java:291)
at org.postgresql.jdbc.PgStatement.executeI nternal(PgStatement.java:432)
at org.postgresql.jdbc.PgStatement.execute( PgStatement.java:358)
at org.postgresql.jdbc.PgPreparedStatement. executeWithFlags(PgPreparedStatement.jav a:171)
at org.postgresql.jdbc.PgPreparedStatement. executeQuery(PgPreparedStatement.java:11 9)
at org.hibernate.engine.jdbc.internal.Resul tSetReturnImpl.extract(ResultSetReturnIm pl.java:70)
... 76 more
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
19.11.2016, 13:32
Ответы с готовыми решениями:

Исключения при использовании Spring Data Jpa
Доброго времени суток. Пишу приложение с использование Spring Boot и Data Jpa. Столкнулся с одной особенностью. Допустим я в своём...

Spring data - ошибка создания сервиса
Всем привет кодеры. Решил я стать модным чуваком и попробовать спринг дату. Но она меня совсем не жалеет. Видимо нельзя так просто стать...

Spring MVC. 404 ошибка при включении Spring Data JPA в проект
Добрый день. Есть простой шаблонный проект с использованием Spring MVC и Maven. С зависимостями Spring MVC проект собирается нормально и...

1
39 / 28 / 8
Регистрация: 14.04.2012
Сообщений: 249
19.11.2016, 21:01  [ТС]
ProxyUserRepository
Кликните здесь для просмотра всего текста
Java
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
package repository.datajpa;
 
import model.User;
import org.springframework.data.domain.Sort;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.transaction.annotation.Transactional;
 
import java.util.List;
 
/**
 * Created by Александр on 14.11.2016.
 */
@Transactional(readOnly = true)
public interface ProxyUserRepository extends JpaRepository<User, Integer> {
    @Override
    User save(User user);
 
    @Modifying
    @Query("DELETE FROM User u WHERE u.id=:id")
    int delete(int id);
 
    @Override
    User findOne(Integer id);
 
    @Override
    List<User> findAll(Sort sort);
 
    @Query("SELECT u FROM User u WHERE u.email=?1")
    User getByEmail(String email);
 
 
}


DataJpaUserRepositoryImpl
Кликните здесь для просмотра всего текста
Java
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
36
37
38
39
40
41
42
43
44
45
package repository.datajpa;
 
import model.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Sort;
import org.springframework.stereotype.Repository;
import repository.UserRepository;
 
import java.util.List;
 
/**
 * Created by Александр on 13.11.2016.
 */
@Repository
public class DataJpaUserRepositoryImpl implements UserRepository {
    private static final Sort SORT_NAME_EMAIL = new Sort("name", "email");
 
    @Autowired
    private ProxyUserRepository proxy;
 
    @Override
    public User save(User user) {
        return proxy.save(user);
    }
 
    @Override
    public boolean delete(int id) {
        return proxy.delete(id) != 0;
    }
 
    @Override
    public User get(int id) {
        return proxy.findOne(id);
    }
 
    @Override
    public User getByEmail(String email) {
        return proxy.getByEmail(email);
    }
 
    @Override
    public List<User> getAll() {
        return proxy.findAll(SORT_NAME_EMAIL);
    }
}


Добавлено через 1 час 0 минут
Тест прошёл, после удаления readonly = true из ProxyUserRepository
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.11.2016, 21:01
Помогаю со студенческими работами здесь

QueryDSL и Spring Data JPA
Начал изучать querydsl. Делал по одному примеру. Там из такого запроса: http://localhost:8080/users?search=lastName:doe,age&gt;25 ...

Осуществить поиск объекта со Spring data jpa
Есть такой объект public class DepositMatrix implements Serializable, Cloneable { public static final String PRODUCT_LOOKUP_MAIN...

Выборка данных из нескольких таблиц используя Spring Data JPA Repository и преобразование в json
Всем привет! Сейчас мне данные отдаются в таком виде: Эти данные берутся из одной таблицы public_organisations. Но есть...

Как получить результат SQL запроса INNER JOIN трех таблиц, в виде List (объектов(строк) через Spring Data JPA ?
Как получить результат SQL запроса INNER JOIN трех таблиц, в виде List&lt;объектов(строк)&gt; через Spring Data JPA ? Есть три таблицы ...

Spring-data - ошибка создания компонента dao-слоя
dao-слоя файл-конфигурации, который описывает работу с dao /** * @PropertySource( value =...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru