|
|
|
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:19:11 |
|
||
|
Java Persistence commit и проблема в новом query
|
|||
|---|---|---|---|
|
#18+
Ах, да! После закрытия приложения и нового открытия, все работает как надо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2013, 21:25:59 |
|
||
|
Java Persistence commit и проблема в новом query
|
|||
|---|---|---|---|
|
#18+
Кстати для связи с БД использую TopLink ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2013, 21:30:34 |
|
||
|
Java Persistence commit и проблема в новом query
|
|||
|---|---|---|---|
|
#18+
Немного поразбирался, оказывается EntityManager кэширует объекты, и пишут что необходимо каждый раз создавать новый. Но ведь память переполнится, если я буду выполнять много запросов на чтение и создавать заново объекты, прога такая. Как мне поступить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2013, 21:09:38 |
|
||
|
Java Persistence commit и проблема в новом query
|
|||
|---|---|---|---|
|
#18+
OdinKostya, Попробуйте добавить в настройки persistence.xml след. св-во: Код: xml 1. 2. 3. 4. 5. - http://stackoverflow.com/a/2709840 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2013, 22:31:53 |
|
||
|
Java Persistence commit и проблема в новом query
|
|||
|---|---|---|---|
|
#18+
не помогло( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2013, 08:18:36 |
|
||
|
Java Persistence commit и проблема в новом query
|
|||
|---|---|---|---|
|
#18+
Тут конечно всего кода не видно, но вот это очень подозрительно: Код: java 1. 2. 3. 4. 5. А где старт первой транзакции? Может, стоит убрать ручное управление, если первая транзакция автоматическая? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2013, 09:38:20 |
|
||
|
Java Persistence commit и проблема в новом query
|
|||
|---|---|---|---|
|
#18+
Есть, после инициализации компонентов приложения и первых запросов на чтение в конструкторе пишу: entityManagerSklad.getTransaction().begin(); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2013, 15:28: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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2013, 22:12:11 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38390120&tid=2128634]: |
0ms |
get settings: |
17ms |
get forum list: |
22ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
39ms |
get topic data: |
15ms |
get forum data: |
4ms |
get page messages: |
76ms |
get tp. blocked users: |
3ms |
| others: | 311ms |
| total: | 497ms |

| 0 / 0 |
