
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
07.09.2013, 21:19:11
|
|||
|---|---|---|---|
|
|||
Java Persistence commit и проблема в новом query |
|||
|
#18+
Добрый вечер! У меня приложение на java и БД MS Access. В приложении jtable, в jtable изменяю ячейки "Страна" и записываю изменения в бд: tablePrice.getModel().addTableModelListener(new TableModelListener() { @Override public void tableChanged(TableModelEvent e) { // Коммит в БД при изменениях в ячейках if (e.getType() == TableModelEvent.UPDATE) { entityManagerSklad.getTransaction().commit(); entityManagerSklad.getTransaction().begin(); } } }); при закрытии приложения код: _connection.close(); entityManagerSklad.flush(); Так вот, после изменений в БД, и создании нового запроса данных с фильтром по ячейке "Страна": queryPrice = entityManagerSklad.createQuery("SELECT s FROM SKPrice s WHERE s.country_production LIKE :cp"); queryPrice.setParameter("cp", "%" + textFieldCountry.getText() + "%"); listPrice.clear(); listPrice.addAll(queryPrice.getResultList()); ... мой фильтр не работает для измененных данны. НО если создаю новый запрос без фильтра, т.е. на все данные, в jtable я вижу мои изменения. Еще ковырялся с flush() и бывало, что в запросе ровно через раз, то работает фильтр то нет. Что думаете? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
07.09.2013, 21:25:59
|
|||
|---|---|---|---|
|
|||
Java Persistence commit и проблема в новом query |
|||
|
#18+
Ах, да! После закрытия приложения и нового открытия, все работает как надо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
07.09.2013, 21:30:34
|
|||
|---|---|---|---|
|
|||
Java Persistence commit и проблема в новом query |
|||
|
#18+
Кстати для связи с БД использую TopLink ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
08.09.2013, 21:09:38
|
|||
|---|---|---|---|
|
|||
Java Persistence commit и проблема в новом query |
|||
|
#18+
Немного поразбирался, оказывается EntityManager кэширует объекты, и пишут что необходимо каждый раз создавать новый. Но ведь память переполнится, если я буду выполнять много запросов на чтение и создавать заново объекты, прога такая. Как мне поступить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
08.09.2013, 22:31:53
|
|||
|---|---|---|---|
Java Persistence commit и проблема в новом query |
|||
|
#18+
OdinKostya, Попробуйте добавить в настройки persistence.xml след. св-во: Код: xml 1. 2. 3. 4. 5. - http://stackoverflow.com/a/2709840 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
09.09.2013, 08:18:36
|
|||
|---|---|---|---|
|
|||
Java Persistence commit и проблема в новом query |
|||
|
#18+
не помогло( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
09.09.2013, 09:38:20
|
|||
|---|---|---|---|
|
|||
Java Persistence commit и проблема в новом query |
|||
|
#18+
Тут конечно всего кода не видно, но вот это очень подозрительно: Код: java 1. 2. 3. 4. 5. А где старт первой транзакции? Может, стоит убрать ручное управление, если первая транзакция автоматическая? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
09.09.2013, 15:28:11
|
|||
|---|---|---|---|
|
|||
Java Persistence commit и проблема в новом query |
|||
|
#18+
Есть, после инициализации компонентов приложения и первых запросов на чтение в конструкторе пишу: entityManagerSklad.getTransaction().begin(); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
09.09.2013, 22:12:11
|
|||
|---|---|---|---|
|
|||
Java Persistence commit и проблема в новом query |
|||
|
#18+
Еще замечена такая особенность, если пишу: if (e.getType() == TableModelEvent.UPDATE) { SKPrice price = (SKPrice) listPrice.get(e.getFirstRow()); SKPrice priceNew = entityManagerSklad.merge(price); entityManagerSklad.getTransaction().commit(); entityManagerSklad.getTransaction().begin(); } И в поле "country" объекта, которое было null, пишу страну (т.е. перед выполнение кода выше). Затем выполняю запрос фильтром по стране. В первый раз этот объект не попадает в результат запроса, второй раз тоже самое вызываю, он уже попадает, потом снова не попадает и т.д. Такое разное количество объектов выдает именно query (код в сообщениях выше). Еще смущает некоторый момент у меня JPA провайдер называется TopLink (JPA 1.0). Что это за 1.0, когда у других провайдеров (hibernate и eclipseLink) 2.0. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=59&tablet=1&tid=2128634]: |
0ms |
get settings: |
11ms |
get forum list: |
22ms |
check forum access: |
6ms |
check topic access: |
6ms |
track hit: |
64ms |
get topic data: |
19ms |
get forum data: |
5ms |
get page messages: |
69ms |
get tp. blocked users: |
2ms |
| others: | 282ms |
| total: | 486ms |

| 0 / 0 |
