powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / OpenSessionInViewFilter блокирует работу с базой
25 сообщений из 25, страница 1 из 1
OpenSessionInViewFilter блокирует работу с базой
    #37044463
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С Новым Годом, уважаемые!

Для удобства работы с Lazy-коллекциями использую фильтр OpenSessionInViewFilter. Удобно, мало возни. В предыдущем проекте не возникало ситуации, когда пришлось бы удалять сущность (при удалением клиентом объекта связанная сущность помечалась статусом "удалено", но не удалялась физически из БД). Сейчас такая потребность возникла.

Если использую фильтр с параметрами по умолчанию (или с singleSession=true) при попытке удалить сущность возникает ошибка:
авторorg.springframework.dao.InvalidDataAccessApiUsageException: Write operations are not allowed in read-only mode (FlushMode.MANUAL): Turn your Session into FlushMode.COMMIT/AUTO or remove 'readOnly' marker from transaction definition.

Если устанавливаю параметр singleSession в false и пытаюсь удалить объект, вываливается исключение:
авторorg.springframework.orm.hibernate3.HibernateSystemException: Illegal attempt to associate a collection with two open sessions; nested exception is org.hibernate.HibernateException: Illegal attempt to associate a collection with two open sessions

Код метода из соответствующего ДАО-класса:
Код: plaintext
1.
2.
3.
4.
 public   void  deleteDirection( Long  id) {
	HibernateTemplate ht = getHibernateTemplate();
	Directions direction = ht.get(Directions. class , id);
	ht.delete(direction);
}
Сущность Directions содержит ленивую коллекцию из сущностей Sections. Код из POJO Directions:
Код: plaintext
1.
2.
@OneToMany(targetEntity = Sections. class , fetch = FetchType.LAZY, mappedBy = "direction", orphanRemoval = true)
@Cascade({CascadeType.ALL})
 private  List<Sections> sections =  new  ArrayList();
Задам банальный вопрос по Чернышевскому: " Что делать? "

Что меня удивило, что попытка получить текущую сессию обламывается (при singleSession=false). То есть, если
Код: plaintext
1.
2.
3.
4.
5.
 public   void  deleteDirection( Long  id) {
	HibernateTemplate ht = getHibernateTemplate();
	Directions direction = ht.get(Directions. class , id);
	Session session = ht.getSessionFactory().getCurrentSession();
	ht.delete(direction);
}
то появляется исключение на получении сессии:
авторorg.hibernate.HibernateException: No Hibernate Session bound to thread, and configuration does not allow creation of non-transactional one here
...
Рейтинг: 0 / 0
OpenSessionInViewFilter блокирует работу с базой
    #37045119
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос еще более актуальный, чем тогда, когда задавался ...
...
Рейтинг: 0 / 0
OpenSessionInViewFilter блокирует работу с базой
    #37045801
Олег Артемов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мспользую OpenSessionInViewFilter в нашем проекте тоже.
Его настройки: flushMode - Auto, singleSession = true Удаление, вставка, обновление проходит через транзакционный сервис - т.е реквест доходит до контроллера, тот вызывает какой-то ТРАНЗАКЦИОННЫЙ метод сервиса (который уже юзает ДАО) и все. После отработки метода сервиса все изменения в базе. Еще: DAO - классы наследуй от HibernateDaoSupport(там есть вся логика по получению сессии для данного потока). Если не получается, запости свой проект сюда на форум, попробуем разобрать по косточкам.
...
Рейтинг: 0 / 0
OpenSessionInViewFilter блокирует работу с базой
    #37045816
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
удивила реализация метода удаления. id уникальный или нет? Если это первичный ключ, то удаление можно сделать банально через
.delete(new Directions(id))
...
Рейтинг: 0 / 0
OpenSessionInViewFilter блокирует работу с базой
    #37045844
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IDVsbruckorg.springframework.dao.InvalidDataAccessApiUsageException: Write operations are not allowed in read-only mode (FlushMode.MANUAL): Turn your Session into FlushMode.COMMIT/AUTO or remove 'readOnly' marker from transaction definition.
Транзации недоконфигурированы в Spring, в основном, потому, что OpenSessionInView не знает какой бизнес метод будет вызван и создает всегда readOnly транзакции. А так как сессия одна на запрос, то и вот. Как вариант, сделать нормальный REST, где POST метод будет соответствовать записи, а GET чтению. Ну и доку почитать что там по конфигурации транзакций c OpenSessionInView можно сделать.

IDVsbruckЕсли устанавливаю параметр singleSession в false и пытаюсь удалить объект, вываливается исключение:

org.springframework.orm.hibernate3.HibernateSystemException: Illegal attempt to associate a collection with two open sessions; nested exception is org.hibernate.HibernateException: Illegal attempt to associate a collection with two open sessions
Коллекция вычитывается в изначальной readOnly транзакции, затем спринг обнаруживает что ему нужна update операция и, вероятно, создаёт под это дело новую сессию. Но тут обнаруживается что Lazy коллекция так просто в двух сессиях не работает.
Можно, например, попробовать вычитать коллекцию целиком, задав FetchMode, если она, действительно, нужна вся для корректного удаления.
...
Рейтинг: 0 / 0
OpenSessionInViewFilter блокирует работу с базой
    #37045850
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IDVsbruckЧто меня удивило, что попытка получить текущую сессию обламывается (при singleSession=false). То есть, если
авторorg.hibernate.HibernateException: No Hibernate Session bound to thread, and configuration does not allow creation of non-transactional one here
Это тоже легко объяснить. singleSession=false разрешает несколько сессий на запрос. Соответсвенно на поток. Поэтому getCurrentSession() может вернуть вам любую сессию из нескольких созданных в этой обработке запроса. Соответственно Spring запрещает это делать, чтобы исключить недетерминированность.
...
Рейтинг: 0 / 0
OpenSessionInViewFilter блокирует работу с базой
    #37045861
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ой, дорогой, как же я тебя ждал ... :)

Спасибо за ответы.
Blazkowiczудивила реализация метода удаления. id уникальный или нет? Если это первичный ключ, то удаление можно сделать банально через
.delete(new Directions(id))
Да, первичный. Не понимаю как ... создавать новый конструктор? ... что это даст? - Надо же удалить существующий объект.
Одним словом, этот момент я полностью не понял.

BlazkowiczТранзации недоконфигурированы в Spring, в основном, потому, что OpenSessionInView не знает какой бизнес метод будет вызван и создает всегда readOnly транзакции. А так как сессия одна на запрос, то и вот. Как вариант, сделать нормальный REST, где POST метод будет соответствовать записи, а GET чтению. Ну и доку почитать что там по конфигурации транзакций c OpenSessionInView можно сделать.
А как сделать, чтобы всегда был не readOnly? - На кой он мне? А по умолчанию он всегда readOnly.

BlazkowiczКоллекция вычитывается в изначальной readOnly транзакции, затем спринг обнаруживает что ему нужна update операция и, вероятно, создаёт под это дело новую сессию. Но тут обнаруживается что Lazy коллекция так просто в двух сессиях не работает.
Можно, например, попробовать вычитать коллекцию целиком, задав FetchMode, если она, действительно, нужна вся для корректного удаления.
КАК? Я понимаю как это сделать при селекте, но как это сделать при удалении? Запросом? (хиберовским или нативным)
...
Рейтинг: 0 / 0
OpenSessionInViewFilter блокирует работу с базой
    #37045879
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IDVsbruckДа, первичный. Не понимаю как ... создавать новый конструктор? ... что это даст? - Надо же удалить существующий объект.
Одним словом, этот момент я полностью не понял.

Не нужно вычитывать объект по id для того чтобы удалить по id. Даже если он с верятностью 99% находится в кэше второго уровня.
Хибернейту нужен только id для удаления. Вот мы и даём ему id в объекте. Значение остальных полей хибернейту не интересно.
Открываем JavaDoc
http://docs.jboss.org/hibernate/core/3.5/api/
delete - Remove a persistent instance from the datastore. The argument may be an instance associated with the receiving Session or a transient instance with an identifier associated with existing persistent state
Открываем мануал
http://docs.jboss.org/hibernate/core/3.5/reference/en/html/objectstate.html
Transient - an object is transient if it has just been instantiated using the new operator , and it is not associated with a Hibernate Session


IDVsbruckА как сделать, чтобы всегда был не readOnly? - На кой он мне? А по умолчанию он всегда readOnly.
Тут есть одна фича у Hibernate. Если в не readOnly сессии вычитать сущность и поменять её состояние, то хибернейт отметит её как dirty и вызовет неявный update при коммите. Готов ли ваш код к такому повороту событий?


IDVsbruckBlazkowiczКоллекция вычитывается в изначальной readOnly транзакции, затем спринг обнаруживает что ему нужна update операция и, вероятно, создаёт под это дело новую сессию. Но тут обнаруживается что Lazy коллекция так просто в двух сессиях не работает.
Можно, например, попробовать вычитать коллекцию целиком, задав FetchMode, если она, действительно, нужна вся для корректного удаления.
КАК? Я понимаю как это сделать при селекте, но как это сделать при удалении? Запросом? (хиберовским или нативным)
Для начала просто попробуй delete(new Directions(id))
...
Рейтинг: 0 / 0
OpenSessionInViewFilter блокирует работу с базой
    #37045907
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
 public   void  deleteDirection( Long  id) {
	getHibernateTemplate().delete( new  Directions(id));
}
авторThe constructor Directions(Long) is undefined
Что очевидно, так как нет конструктора.

Создал конструктор
Код: plaintext
1.
2.
 public  Directions( Long  id) {
	 this .id = id;
}
При тесте выдает исключение:
авторorg.springframework.dao.DataIntegrityViolationException: could not delete: [project.db.pojo.Directions#2]; SQL [delete from directions where id=?]; constraint [null]; nested exception is org.hibernate.exception.ConstraintViolationException: could not delete: [project.db.pojo.Directions#2]
И это очень странно, так как
Код: plaintext
1.
2.
@OneToMany(targetEntity = DirectionsText. class , fetch = FetchType.LAZY, mappedBy = "direction", orphanRemoval = true)
@Cascade({CascadeType.ALL})
 private  List<DirectionsText> text =  new  ArrayList();
где видно, что CascadeType=ALL и orphanRemoval=true.

То есть сущность все же надо выбирать перед удалением. Или цепочкой удалять зависимые объекты. Но это точно неправильно, учитывая возможности Хибернейта.
...
Рейтинг: 0 / 0
OpenSessionInViewFilter блокирует работу с базой
    #37045927
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тогда попробуй получить объект через findByCriteria

Код: plaintext
1.
2.
DetachedCriteria criteria = DetachedCriteria.forClass(Directions. class ).add(Expression.idEq( Long .valueOf(id)));
criteria.setFetchMode("sections", FetchMode.JOIN);
List l = getHibernateTemplate().findByCriteria(criteria);
...
Рейтинг: 0 / 0
OpenSessionInViewFilter блокирует работу с базой
    #37045983
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Те же яйца ... :(
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
	 public   void  deleteDirection( Long  id) {
		HibernateTemplate ht = getHibernateTemplate();
		DetachedCriteria criteria = DetachedCriteria.forClass(Directions. class ).add(Restrictions.idEq( Long .valueOf(id)));
		criteria.setFetchMode("sections", FetchMode.JOIN);
		List l = ht.findByCriteria(criteria);
		Directions direction = (Directions) l.get( 0 );
		ht.delete(direction);
	}
авторorg.springframework.orm.hibernate3.HibernateSystemException: Illegal attempt to associate a collection with two open sessions; nested exception is org.hibernate.HibernateException: Illegal attempt to associate a collection with two open sessions
...
Рейтинг: 0 / 0
OpenSessionInViewFilter блокирует работу с базой
    #37046160
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IDVsbruck,
таки придется изучить
http://static.springsource.org/spring/docs/3.0.x/reference/transaction.html
...
Рейтинг: 0 / 0
OpenSessionInViewFilter блокирует работу с базой
    #37046168
Олег Артемов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Парень, почитай главу про транзакции обязательно. Ты похоже пытаешься все узнать методом научного тыка.
...
Рейтинг: 0 / 0
OpenSessionInViewFilter блокирует работу с базой
    #37046243
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, не все ... далеко не все ... Вопросов возникает очень много, но подавляющее количество решаю сам. Даже зачастую и те, которые задавал тут и никто не ответил.
В данном случае вариантов 3: сделать как умею (не удалять, а помечать удаленным), сделать через одно место (как, видимо, я и сделаю) или сделать правильно и хорошо с помощью советов. Просто отставить работу и заниматься самообразованием я не буду - времени нет, да и желания особого нет.

Был бы это банальный вопрос, он бы тут не задавался. гугл однозначного ответа не дает - везде тоже умники отвечают - "учи или смотри Transactions". Ну не знаю я, где конкретно искать и что искать для данного случая. Все перелопачивать не буду.

P.S. В разделах, где я обладаю достаточными знаниями, в случае, если я знаю как сделать или могу помочь, я советую или помагаю. Хотя, бывает, и тыкаю головой, как некоторые ... :), но все равно помагаю.
...
Рейтинг: 0 / 0
OpenSessionInViewFilter блокирует работу с базой
    #37046409
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
@Transactional(readOnly = false)
не?
...
Рейтинг: 0 / 0
OpenSessionInViewFilter блокирует работу с базой
    #37046427
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Странно ... запостил вчера свое решение, а поста нет.
Сделал, как и говорил, через одно место:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
	 public   void  deleteDirection( Long  id) {
		HibernateTemplate ht = getHibernateTemplate();
		Session session = ht.getSessionFactory().openSession();
		Transaction transaction =  null ;
		 try  {
			transaction = session.beginTransaction();
			Directions direction = (Directions) session.get(Directions. class , id);
			session.delete(direction);
			transaction.commit();
		}  catch  (Exception exception) {
		      if  (transaction !=  null ) transaction.rollback();
		}  finally  {
			session.close();
		}
	}
Работает. Но смущает другое - зачем в таком случае использование Спринга и его возможностей? Это можно было и чистым Хибером сделать.

@Transactional (со всеми параметрами) я испытал еще до первого поста - это первое, о чем подумал. Для тестов я его втыкал куда только можно - и к бизнес-классу, и к бизнес-методу, и к ДАО-классу, и к методу - его действия не видно.
...
Рейтинг: 0 / 0
OpenSessionInViewFilter блокирует работу с базой
    #37046494
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IDVsbruck@Transactional (со всеми параметрами) я испытал еще до первого поста - это первое, о чем подумал. Для тестов я его втыкал куда только можно - и к бизнес-классу, и к бизнес-методу, и к ДАО-классу, и к методу - его действия не видно.
Так мы же не видим всей инфраструктуры. Может у тебя ДАО вообще не в спринговом контексте.
Смысл Spring как раз в том чтобы всю эту мишуру не писать в каждом методе.
...
Рейтинг: 0 / 0
OpenSessionInViewFilter блокирует работу с базой
    #37046547
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
О! Так и я за это!
Не, ДАО-классы в контексте (выдержка из application-config.xml):
Код: plaintext
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.
	<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
		{properties}
	</bean>
	<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
		<property name="dataSource" ref="dataSource"/>
		<property name="hibernateProperties">
			<props>
				{properties}
			</props>
		</property>
		<property name="annotatedClasses">
			<list>
				<value>irinails.db.pojo.Directions</value>
				{other POJOs}
			</list>
		</property>
	</bean>
	<bean id="transactionProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean" abstract="true">
		<property name="transactionManager" ref="transactionManager"/>
		<property name="transactionAttributeSource">
			<bean class="org.springframework.transaction.annotation.AnnotationTransactionAttributeSource"/>
		</property>
	</bean>
	<bean id="shopDAO" class="project.db.dao.ShopDAOImpl" autowire="byType">
		<property name="sessionFactory" ref="sessionFactory"/>
	</bean>
	<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
		<property name="sessionFactory" ref="sessionFactory"/>
	</bean>
(там много всякой мишуры - другие ДАО, bundles)

Правда, есть один нюанс ... знаю, что @Transactional вроде как надо ставить в интерфейсе класса, а не в самом классе. И в прошлом проекте эта аннотация так и стояла - в интерфейсе бизнес-класса, по совместительству сервис (он использовался BlazeDS'ом). Сейчас используется DWR, для которого интерфейсы необязательны (такая архитектура приведена даже на родном сайте), поэтому допускаю, что для использования оговариваемой аннотации нужны еще какие-то доработки/настройки.

P.S. Приношу извинения за некомпетентное объяснение - теоретическая подготовка у меня никакая.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
OpenSessionInViewFilter блокирует работу с базой
    #38512962
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IDVsbruck,

Как вы решили свою проблему?

Ловлю такой же баг - после пересборки проекта с чистого листа .


Код: 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.
@Service
public class MyServiceImpl implements  MyReportService {
    @Autowired
    private SessionFactory sessionFactory;
    private HibernateTemplate ht;
 
    @PostConstruct
    public void init() {
        ht = new HibernateTemplate(sessionFactory);
 
    }
 
    @Override
    @Transactional
    public InfoReqLog save(InfoRequest infoRequest) {
       InfoReqLog infoReqLog = new InfoReqLog(infoRequest);
 
         ht.save(infoReqLog );
 
        return infoReqLog ;
       
    }
 
…
}



поймал в ht.save(infoReqLog );


Код: java
1.
2.
3.
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.dao.InvalidDataAccessApiUsageException: Write operations are not allowed in read-only mode (FlushMode.MANUAL): Turn your Session into FlushMode.COMMIT/AUTO or remove 'readOnly' marker from transaction definition.
                at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:894)
                at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:789)




если прописать

Код: java
1.
2.
    Session session = sessionFactory.openSession();
    session.save(infoReqLog );



то все ок!
...
Рейтинг: 0 / 0
OpenSessionInViewFilter блокирует работу с базой
    #38512977
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum1,
@Transactional(readOnly=false) ?
...
Рейтинг: 0 / 0
OpenSessionInViewFilter блокирует работу с базой
    #38513161
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

нет , это уже было испытано :(

тут говориться об

http://stackoverflow.com/questions/6810158/java-hibernate-write-operations-are-not-allowed-in-read-only-mode


Код: java
1.
2.
 <param-name>singleSession</param-name>
 <param-value>false</param-value>



Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
    <filter>
        <filter-name>MyOpenSessionInViewFilter</filter-name>
        <filter-class>
            org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
        </filter-class>
        <init-param>
            <param-name>singleSession</param-name>
            <param-value>false</param-value>
        </init-param>
    </filter>
    <filter>



Плюс еще можно setCheckWriteOperations

Код: java
1.
2.
  ht = new HibernateTemplate(sessionFactory);
  ht.setCheckWriteOperations(false);



работает два варианта - теперь нужно понять какой из них верный :)

и разобраться почему такое происходит...


PS

по поводу mode="aspectj" - тоже задумался, ведь и этот атрибут так же использую .... странно все это ....

Код: java
1.
<tx:annotation-driven mode="aspectj" transaction-manager="transactionManager" />
...
Рейтинг: 0 / 0
OpenSessionInViewFilter блокирует работу с базой
    #38513169
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum1нет , это уже было испытано :(

Спасибо за комплимент. Вероятно вы предполагали что я, как штатный телепат, это должен был понять уже из первого сообщения. Но для других стоит такие вещи очевидно упоминать в вопросе.
Можно было попробовать Propagation указать, чтобы новая или вложеная транзакция создавалсь в сервисе.

Atum1 работает два варианта - теперь нужно понять какой из них верный :)

Никакой. Open-session-in-view это anti-pattern и вы просто боретесь с одним из косяком, который он породил.

Atum1и разобраться почему такое происходит...

У Hibernate по-умолчанию Session и Transaction сильно связаны. Вот и выходит что сразу создаётся read-only сессия.
Глобально делать все сессии не read-only, тоже как-то не фонтан. Через dirty сущности в Hibernate можно поймать баги с нежелаемыми UPDATE-ами на ровном месте.
...
Рейтинг: 0 / 0
OpenSessionInViewFilter блокирует работу с базой
    #38513177
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczСпасибо за комплимент. Вероятно вы предполагали что я, как штатный телепат, это должен был понять уже из первого сообщения. Но для других стоит такие вещи очевидно упоминать в вопросе.
Можно было попробовать Propagation указать, чтобы новая или вложеная транзакция создавалсь в сервисе.

Blazkowicz, спасибо Вам!
- я сначала попробовал все советы в топике (и @Transactional - так же )- потом стал искать решение.



тут немного есть , но не обо всем :
http://samolisov.blogspot.ru/2009/01/lazy-loading-hibernate-spring.html


Propagation - нужно попробовать ...

отпишусь .
...
Рейтинг: 0 / 0
OpenSessionInViewFilter блокирует работу с базой
    #38513190
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИМХО, в JavaDoc OpenSessionInViewFilter очень подробно разжевано что как и почему сделано, и как должно работать и какие есть варианты.
...
Рейтинг: 0 / 0
OpenSessionInViewFilter блокирует работу с базой
    #38513210
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczИМХО, в JavaDoc OpenSessionInViewFilter очень подробно разжевано что как и почему сделано, и как должно работать и какие есть варианты.


@Transactional(propagation = Propagation.REQUIRES_NEW) - такое же поведение - и

Write operations are not allowed in read-only mode (FlushMode.MANUAL): Turn your Session into FlushMode.COMMIT/AUTO or remove 'readOnly' marker from transaction definition.

пока работает отлично только с

Код: java
1.
ht.setCheckWriteOperations(false);
...
Рейтинг: 0 / 0
25 сообщений из 25, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / OpenSessionInViewFilter блокирует работу с базой
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]