在使用spring和hibernate开发Web应用程序时,我得到了以下的执行。
java.sql.SQLException:ORA-02289:序列不存在
当我试图将数据插入表格时,我使用序列来增加request_id的值。
我使用以下编码插入
@Override
public void postRequest(RequestInfo requestInfo)
{
Session session = null;
Transaction trans = null;
SessionFactory sessionFactory = null;
sessionFactory=HibernateConfig.getSessionFactory();
session= sessionFactory.openSession();
trans = session.beginTransaction();
session.save(requestInfo);
trans.commit();
session.close();
}
public class HibernateConfig
{
public static SessionFactory sessionFactory;
public static SessionFactory getSessionFactory()
{
sessionFactory = new Configuration().configure().buildSessionFactory();
return sessionFactory;
}
}
在hibernate映射中,我提到了这样的
<id name="requestId" type="int" column="request_id" >
<generator class="sequence">
<param name="sequence">REQUEST_INFO_SEQ</param>
</generator>
</id>
我尝试使用本机,但我无法获取要插入的值。
我正在使用oracle 11g。
任何人都可以为我提供解决方案。
答案 0 :(得分:5)
在hbm.xml文件中为序列名称提供了类似 schemaName.sequenceName 的模式名称后,插入操作正常工作。 谢谢大家回复查询。
答案 1 :(得分:2)
序列是否存在?要检查,请执行:
select * from all_sequences where sequence_name = 'REQUEST_INFO_SEQ'
答案 2 :(得分:0)
我认为POJO对象在参数中出现了问题,你应该首先创建会话做3件事,制作POJO对象(瞬态)然后调用持久化方法保存,更新,删除(持久状态)和trx。 commit(hibernate对象的分离状态)。并且应该在try catch块中执行此操作并捕获HibernateException,然后调用finally将关闭会话,并使用buildSessionFactory();
sessionFactory = new Configuration()。configure()。buildSessionFactory();