LazyInitializationException даже при том, что openSessionInViewInterceptor

Вы можете преобразовать каждый список в наборы, получить пересечение и преобразовать в bool:

L = [480, 9, 104]
mask = np.array([bool(set(map(int, x)) & set(L))  for x in df['split_categories']])

Или преобразовать list column в DataFrame, привести к плаванию и сравнить с isin:

df1 = pd.DataFrame(df['split_categories'].values.tolist(), index=df.index)
mask = df1.astype(float).isin(L).any(axis=1)
<час>
df = df[mask]
print (df)
  album_id categories split_categories
0    66562    480.494       [480, 494]
3     1709          9              [9]
4    59239    105.104       [105, 104]
8
задан 13 January 2009 в 14:47
поделиться

4 ответа

Я думаю, что Вам нужен фильтр на уровне web.xml:

<filter>
    <filter-name>Spring OpenEntityManagerInViewFilter</filter-name>
    <filter-class>org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter</filter-class>
</filter>

Только этот путь будет пружина смочь знать, когда Ваше представление будет представлено.

1
ответ дан 6 December 2019 в 01:41
поделиться

Можно попытаться использовать собственный компонент перехватчика от Spring, смотрят в моем

<bean id="transactionManager"
    class="org.springframework.orm.hibernate3.HibernateTransactionManager">
    <property name="sessionFactory">
        <ref bean="sessionFactory" />
    </property>
</bean>

<bean id="txAttributeSource"
    class="org.springframework.transaction.interceptor.NameMatchTransactionAttributeSource">
    <property name="properties">
        <props> <!-- this catches every method with the interceptor-->
            <prop key="*">PROPAGATION_REQUIRED</prop>
        </props>
    </property>
</bean>

<bean id="txInterceptor"
    class="org.springframework.transaction.interceptor.TransactionInterceptor">
    <property name="transactionManager">
        <ref local="transactionManager" />
    </property>
    <property name="transactionAttributeSource">
        <ref local="txAttributeSource" />
    </property>
</bean>

<bean id="autoProxyCreator" class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
    <property name="interceptorNames">
        <list>
            <idref local="txInterceptor" />
        </list>
    </property>
    <property name="beanNames">
        <list> <!--this proxies every bean with the especified pattern -->
            <value>*BL</value>
        </list>
    </property>
</bean>
0
ответ дан 6 December 2019 в 01:41
поделиться

Чтобы ваш сеанс оставался открытым в течение всего запроса, вам нужно добавить Spring OpenSessionInViewFilter в ваш web.xml. Этот специфичен для hibernate3:

<filter>
    <filter-name>OpenSessionInViewFilter</filter-name>
    <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
</filter>
0
ответ дан 6 December 2019 в 01:41
поделиться

Проблема заключается в том, что вы используете диспетчер транзакций: это запустит новый сеанс, и, поскольку вы открыли его вручную, он также закроет его. Вам необходимо настроить управление транзакциями с помощью конфигурации Springs, чтобы все компоненты работали правильно вместе.

Используйте перехватчик транзакций на бизнес-уровне (TasqueService).

1
ответ дан 6 December 2019 в 01:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: