Hibernate,强制从数据库中获取对象

时间:2012-04-10 04:21:02

标签: java hibernate

如果我添加一个新对象并转到.save()然后运行一个select,则从类中检索最后创建的对象,而不是DB,这意味着date属性尚未转换为SQL格式,它弄乱了我的一些前端代码。

E.G

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

有没有办法确保从数据库中提取所有对象?

由于

2 个答案:

答案 0 :(得分:2)

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

如果您依靠数据库向用户返回格式正确的日期字符串,我建议您重新考虑用户界面,业务逻辑和持久层的分离。只要您能够理解存储/检索的数据,您就不应该关心数据库或Hibernate如何形成字符串。研究MVC,MVVM或任何其他分离模式。

答案 1 :(得分:0)

默认情况下,get()或load将首先从Cache读取,然后在数据库中找不到数据库。它也被添加到缓存中。您将需要具有适当LockMode的session.get()。不是默认的LockMode.NONE。

另外我认为它还需要在save()和get()之间使用flush()来保存操作已经同步到数据库。