0

如果我添加一个新对象并 go .save() 然后运行一个选择,则创建的最后一个对象是从类中检索的,而不是从数据库中检索,这意味着日期属性尚未转换为 SQL 格式并且它被搞砸了我的一些前端代码。

例如

Tue Feb 06, 2012代替2012-02-06 00:00:00

有没有办法确保我所有的对象都从数据库中提取出来?

谢谢

4

2 回答 2

2

Hibernate 有几级缓存。您正在经历的是会话/一级缓存。没有办法禁用它。但是,如果您坚持做这样的事情,您可以考虑使用 StatelessSession http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html/batch.html第 15.3 节。

如果您依赖数据库向用户返回格式正确的日期字符串,我建议您重新考虑用户界面、业务逻辑和持久层的分离。你不应该关心数据库或休眠如何格式化字符串,只要你能理解你正在存储/检索的数据。查看 MVC、MVVM 或任何其他分离模式。

于 2012-04-10T04:28:24.797 回答
0

by default your get() or load will read from Cache first and then go to database if not found in database. On which it also get added to cache. You will need session.get() with appropraite LockMode. Not the default LockMode.NONE.

Plus I believe it requires flush() also in between save() and get() to gaurantee that save operation has been synchronized to database.

于 2012-04-10T05:12:40.423 回答