我的数据库中有两个架构。一个是“管理员”架构,另一个是“用户”架构。
我已经在“管理员”模式中创建了一个序列。我的weblogic ejb应用程序从weblogic-cmp-jar.xml文件中读取数据库详细信息,例如数据源名称,表名称,列,架构名称。在数据源名称中,我为DS提供了“用户”模式。我需要我的应用程序才能正确读取数据库属性并填充ejb bean。
但是,在更新数据库中的记录时出现以下错误(序列不存在:)>
> WARN - com.abc.xyz.SomeHandlerEJB_vhem4v_Impl - [ACTIVE] > ExecuteThread: '3' for queue: 'weblogic.kernel.Default (self-tuning)' > - update > javax.ejb.TransactionRolledbackLocalException: EJB Exception: > at weblogic.ejb.container.internal.EJBRuntimeUtils.asTxRollbackLocalException(EJBRuntimeUtils.java:151) > at weblogic.ejb.container.internal.BaseLocalObject.handleSystemException(BaseLocalObject.java:471) > at weblogic.ejb.container.internal.BaseEJBLocalHome.handleSystemException(BaseEJBLocalHome.java:102) > at weblogic.ejb.container.internal.EntityEJBLocalHome.create(EntityEJBLocalHome.java:171) > at weblogic.ejb.container.internal.EntityEJBLocalHome.create(EntityEJBLocalHome.java:133) Caused by: javax.ejb.EJBException: ORA-02289: sequence does not exist at weblogic.ejb.container.cmp.rdbms.RDBMSPersistenceManager.execGenKeyQuery(RDBMSPersistenceManager.java:4434) at weblogic.ejb.container.cmp.rdbms.RDBMSPersistenceManager.getNextGenKeyPreFetch(RDBMSPersistenceManager.java:4356) at weblogic.ejb.container.cmp.rdbms.RDBMSPersistenceManager.getNextSequenceKey(RDBMSPersistenceManager.java:4309) at
这是我的weblogic-cmp-jar.xml文件的内容:
<weblogic-rdbms-bean> <ejb-name>MyEJB</ejb-name> <data-source-name>jdbc/MyDS</data-source-name> <table-map> <table-name>my_table</table-name> <field-map> <cmp-field>messageId</cmp-field> <dbms-column>messageId</dbms-column> </field-map> ---------- ---------- </table-map> <automatic-key-generation> <generator-type>Oracle</generator-type> <generator-name>SEQ_MYSEQNAME</generator-name> <key-cache-size>1</key-cache-size> </automatic-key-generation> </weblogic-rdbms-bean>
下面是我观察到的行为:
<generator-name>SEQ_MYSEQNAME</generator-name> // does not work <generator-name>ADMIN.SEQ_MYSEQNAME</generator-name> // works fine
如果获得以下结果,则在--user--模式的数据库中:
select * from user_sequences // It does not show anything. select * from ALL_SEQUENCES // It displays the sequence names.
我只想使用序列名称而不使用序列所有者。
我正在使用下面的软件堆栈:
我的数据库中有两个架构。一个是“管理员”模式,另一个是“用户”模式。我已经在“管理员”模式中创建了一个序列。我的weblogic ejb应用程序读取数据库详细信息,例如数据源名称,...
我觉得在用户架构的SYNONYM
下添加将完成任务。