如果我添加一个新对象并转到.save()然后运行一个select,则从类中检索最后创建的对象,而不是DB,这意味着date属性尚未转换为SQL格式,它弄乱了我的一些前端代码。
E.G
Tue Feb 06, 2012
代替2012-02-06 00:00:00
有没有办法确保从数据库中提取所有对象?
由于
答案 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()来保存操作已经同步到数据库。