Есть форма и таблица с данными.
Открываю нужный объект для редактирование в первый раз, естественно всё нормально. Закрываю форму. Из БД вручную удаляю строку. Открываю форму ещё раз. И откуда-то hibernate берет данные(из кэша ли) которых в БД уже нет.
Почему, если я закрываю сессию, то и данных в кэше быть не может...
Открытие формы:
ProductBrand productBrand = productBrandDAO.getById(
Long.parseLong(getTblPanel().getValueRow(index).get(0)));
int result = JOptionPane.showConfirmDialog(null,
modalPanel.createEditingProductBrandPanel(
new ProductTypeDAO().getAll(), productBrand),
"Редактирование значений:", JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE);
Метод getById:
@Override
public ProductBrand getById(Long id) {
Session session = null;
ProductBrand result = null;
try {
session = HibernateUtil.getSessionFactory().openSession();
result = (ProductBrand) session.get(ProductBrand.class, id);
}catch (Exception e) {
JOptionPane.showMessageDialog(null, e.getMessage(), "Ошибка I/O", JOptionPane.OK_OPTION);
System.out.println(e.getMessage());
} finally {
if (session != null && session.isOpen())
session.close();
}
return result;
}
Как так получается? Ну от куда подгружаются те данные которых в БД уже нет? И как это запретить?
UPD_1:
И в самой проге:
@Override
public boolean delete(Long id) {
Session session = null;
boolean flag = true;
try {
session = HibernateUtil.getSessionFactory().openSession();
session.beginTransaction();
session.delete(new ProductBrand(id));
session.getTransaction().commit();
}catch (Exception e) {
flag = false;
session.getTransaction().rollback();
System.out.println(e.getMessage());
JOptionPane.showMessageDialog(null, e.getMessage(), "Ошибка I/O", JOptionPane.OK_OPTION);
} finally {
if (session != null && session.isOpen())
session.close();
}
return flag;
}
Виртуальный выделенный сервер (VDS) становится отличным выбором
help me пожалуйста я очень долго мучаюсь помогите кто знает