我有一个简单的方法只做两行并尝试返回oracle数据库表中的所有对象:
DetachedCriteria criteria = DetachedCriteria.forClass(Object.class);
return (Collection)getHibernateTemplate().findByCriteria(criteria);
但是,我收到了“ORA-01031:权限不足”错误。当我检查show_sql的日志时,我发现了这个:
Hibernate: select this_.NAME as NAME8_0_, from PL_VW this_ where ID=?
Hibernate: update PL_VW set NAME=? where ID=?
Hibernate: update PL_VW set NAME=? where ID=?
Hibernate: update PL_VW set NAME=? where ID=?
Hibernate: update PL_VW set NAME=? where ID=?
Hibernate: update PL_VW set NAME=? where ID=?
...
为什么findByCriteria会选择一个ID并进行多次更新?是否必须为挂钩到休眠的所有表提供更新访问权限?我不希望表格更新!
或者代码有问题吗?
提前致谢。
答案 0 :(得分:0)
是的,应该返回所有对象。
我发现了最不明显的问题:
在getName方法中,我做了一些子字符串函数并返回了一个修改后的字符串。
我猜hibernate立即尝试使用getName中返回的内容更新数据库。 (什么?!为什么?!)
这是在Hibernate文档中的任何地方提到的还是应该是常识?我是个菜鸟。
无论如何,谢谢你的帮助。