Форум программистов, компьютерный форум CyberForum.ru

Java и базы данных

Войти
Регистрация
Восстановить пароль
 
kostrorod
39 / 28 / 6
Регистрация: 14.04.2012
Сообщений: 244
#1

PostgreSQL Ошибка сессии при загрузки Entity из БД - Java БД

26.11.2016, 12:21. Просмотров 301. Ответов 0

Имеется Entity
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
@Entity
@Table(name = "products", uniqueConstraints={@UniqueConstraint(columnNames={"name"})})
public class Product  extends NamedEntity {
    @Column(name = "description")
    private String description;
 
    @Column(name = "price", nullable = false)
    private double price;
  
 
    @Column(name = "discount")
    private int discount;
 
  
    @Column(name = "discount_price")
    private double discountPrice;
 
    
    @Column(name = "maxLed", nullable = false)
    private int maxLed;
 
    public Product() {
    }


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
66
67
68
69
70
71
<?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">
 
    <!-- БД-->
    <jdbc:initialize-database data-source="dataSource">
        <jdbc:script location="classpath:db/initDB.sql"/>
        <jdbc:script location="classpath:db/populateDB.sql"/>
    </jdbc:initialize-database>
 
    <!--@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>


при тестировании метода
Кликните здесь для просмотра всего текста
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
@ContextConfiguration({
        "classpath:spring/spring-config.xml",
        "classpath:spring/spring-mvc.xml"
})
@RunWith(SpringJUnit4ClassRunner.class)
public class OrderServiceTest {
 
    @Autowired
    private OrderService orderService;
    @Autowired
    private UserService userService;
    @Autowired
    private ProductService productService;
 
    @Test
    public void save() throws Exception {
        User user = userService.get(10l);
        Product product = productService.get(13l);
        Map<Product, Integer> products = new HashMap<Product, Integer>();
        products.put(product, 2); // ошибка на этой строке
        Order order = new Order(null, products, user, StatusOrder.PENDING);
        Order created = orderService.save(order);
        assertThat(created.getId(), is(notNullValue()));
    }

возникает ошибка сессии
Кликните здесь для просмотра всего текста
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
org.hibernate.LazyInitializationException: could not initialize proxy - no Session
 
    at org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:147)
    at org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:260)
    at org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.invoke(JavassistLazyInitializer.java:73)
    at model.Product_$$_jvst2f2_4.hashCode(Product_$$_jvst2f2_4.java)
    at java.util.HashMap.hash(HashMap.java:338)
    at java.util.HashMap.put(HashMap.java:611)
    at service.OrderServiceTest.save(OrderServiceTest.java:40)
    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:498)
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
    at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
    at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:75)
    at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:86)
    at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:84)
    at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:252)
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:94)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
    at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
    at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:191)
    at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
    at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68)
    at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:51)
    at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:237)
    at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)

как её устранить?
Если отдельно тестить Product product = productService.get(13l); то всё ок.

Добавлено через 14 часов 42 минуты
Проблема решена анатацией @Transactional
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.11.2016, 12:21
Здравствуйте! Я подобрал для вас темы с ответами на вопрос PostgreSQL Ошибка сессии при загрузки Entity из БД (Java БД):

Ошибка при создании сессии Hibernate - Java БД
Здравствуйте, в приложении с использованием spring и hibernate выходит ошибка, помогите разобраться в чём дело: db-spring.xml ...

Ошибка при вызове метода ToList() (Entity) - C# MVC
класс Context public class Context: DbContext { static Context() { ...

Ошибка при старте сессии - PHP
&lt;?php session_start(); require_once(&quot;data/config.php&quot;); require_once(&quot;library/mysql.php&quot;); ...

Ошибка при старте сессии - PHP
Выдает ошибку на старт сессии: Warning: session_start() : Cannot send session cache limiter - headers already sent (output started at...

Ошибка при изменении данных через Entity Framework - C#
Столкнулся с проблемой обновления данных, сам еще новичок в Entity. Добавляет в таблицу все ок, но стоит изменить данные как тут же...

Ошибка при подключении к mssql с использованием entity framework - C# MVC
Пытаюсь подключиться к ДБ и создать на основе содержимого таблицы &quot;products&quot; заполнить контейнер IQueryable. Сам класс. namespace...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.11.2016, 12:21
Привет! Вот еще темы с ответами:

Entity Framework: Ошибка при попытке загрузить данные из базы - C#
Есть проект на C#, который соединён с базой. Начал переделывать на Entity через edmx, и вот какая ошибка при попытке просто загрузить...

Как сделать, чтобы при точном совпадении всех атрибутов entity в таблицу печаталась одна строка с количеством этих entity ? - Ruby
В программировании я всего месяц – потребовалось написать плагин на RUBY. Написал , все работает. Но хочется «красоты». Помогите дописать… ...

Entity Framework 4 событие полной загрузки - C#
делаю загрузку, но понятно она происходит не сразу, по этому нужно событие когда будет известно когда загрузились все данные. ...

.NET 3.x При добавдении ADO.NET Entity Data Model в проект вылетает ошибка - C#
Создал Dynamic Data Web Application, пытаюсь добавить ADO.NET Entity Data Model, выскакивает окно об ошибке: An error occured loading the...


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru