Решение
Добре, мистерията е разгадана! Оказа се, че трябва изрично да извикам промиване () на сесията обект.
Следният отговор ми даде намек:
Хибернацията не записва обект в базата данни?
Пример
Ето работещ пример (обърнете внимание на session.flush()
който трябва да бъде извиканпреди затваряне сесия ):
@Service
public class TableOneDaoImpl extends HibernateDaoSupport implements TableOneDao {
@Override
public void save(TableOne tableOne) throws Exception {
Session session = null;
try {
session = getSessionFactory().openSession();
session.save(tableOne);
session.flush();
} catch (Exception e) {
throw new Exception("Could not save tableOne!", e);
} finally {
if (session != null) {
session.close();
}
}
}
}
И отново, когато използвате MySQL, той работи добре без изрично зачервяване.
Интересно наблюдение
Гореспоменатото тестово уеб приложение използва чист Hibernate конфигурация и SessionFactory на Hibernate (т.е. без persistence.xml и JPA entityManager ). Но също така имам същото тестово приложение, конфигурирано да използва JPA . И в това приложение всичко също работи без изрично промиване както с MySQL, така и с PostgreSQL.