我正在开发一个Web应用程序(java),我正在使用Hibernate 4.1.4和oracle 11g。根据安全性规则,dbuser(应用程序使用的db用户)没有插入权限。然后,每次我的应用程序要进行插入时,它必须在执行插入查询之前执行查询“SET ROLE XXXX ....”。这个“set role ..”将赋予dbuser在该事务中插入某些表的特权。如何用Hibernate做到这一点?我不想把它放在默认的conf中因为我只应该在插入中执行上述查询(而不是选择...)。我尝试使用我的保存方法:
public Object saveOrUpdate(Object entity) {
Query query = getSessionFactory().getCurrentSession().createSQLQuery("set role XXXX identified by XXXX");
query.executeUpdate();
getSessionFactory().getCurrentSession().saveOrUpdate(entity);
return entity;
}
但它不起作用。我收到错误“视图或表不存在”。当我尝试只执行query.executeUpdate()或saveOrUpdate(实体)时没有发生错误。
我想这就是全部。如果您需要更多详细信息,请向我询问。谢谢!