Table not found in statement [select sequence_name from system_sequences]

本文介绍了解决使用Hibernate配置文件生成HSQLDB数据库Schema时遇到的Table not found错误的方法。通过升级Hibernate版本及调整类库依赖,成功解决了JBoss启动时报错的问题。
最近做一个项目,要用到hibernate和内嵌HSQL数据库,不过总是出问题,在网上搜到了解决方法,特转来收藏 错误:用hibernate配置文件生成数据库Schema。设置hbm2ddl = update,启动JBoss时报错误Table not found in statement [select sequence_name from system_sequences]。如果去掉这条,则启动没问题。 HSQLDB版本:1.8.0.10 Hibernate版本:3.0.5 JBoss版本:4.2.3GA 详细错误: === stack trace === INFO [main] SchemaUpdate - Running hbm2ddl schema update INFO [main] SchemaUpdate - fetching database metadata ERROR [main] SchemaUpdate - could not get database metadata java.sql.SQLException: Table not found in statement [select sequence_name from system_sequences] org.hsqldb.jdbc.Util.sqlException(Unknown Source) org.hsqldb.jdbc.jdbcStatement.fetchResult(Unknown Source) org.hsqldb.jdbc.jdbcStatement.executeQuery(Unknown Source) org.hibernate.tool.hbm2ddl.DatabaseMetadata.initSequences (DatabaseMetadata.java:113) org.hibernate.tool.hbm2ddl.DatabaseMetadata.(DatabaseMetadata.java:39) org.hibernate.tool.hbm2ddl.SchemaUpdate.execute(SchemaUpdate.java:124) 原因:hibernate dialect 和 hsqldb 之间的问题 参考:http://203.208.39.132/search?q=cache:1CqIddxsEKYJ:opensource.atlassian.com/projects/hibernate/browse/HHH-608%3Fpage%3Dcom.atlassian.jira.plugin.system.issuetabpanels%253Achangehistory-tabpanel+at+org.hibernate.tool.hbm2ddl.DatabaseMetadata.initSequences&cd=10&hl=zh-CN&ct=clnk&gl=cn&st_usg=ALhdy28ExWKmEvcPvdosBtFP01uoylQ4RQ(这是google缓存页,源地址如下,但打不开) [http://opensource.atlassian.com/projects/hibernate/browse/HHH-608?page=com.atlassian.jira.plugin.system.issuetabpanels%3Achangehistory-tabpanel] 解决:hibernate升到3.2.5GA 后续问题:Error creating bean with name 'sessionFactory' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Initialization of bean failed; nested exception is java.lang.NoClassDefFoundError: org/hibernate/cfg/HbmBinder$SecondPass 描述:看似是缺少包,但检查过有这个Class 原因:包冲突,刚才删除hibernate 3.0.5时,仅仅删除了hibernate3.jar,还有hibernate-annotations.jar也要删除 解决:删除hibernate-annotations.jar 参考:http://wvvw3.javaeye.com/blog/125120
<think> 我们被要求回答关于SQL语句中'用户名'部分应填写什么内容的问题。根据引用内容,我们可以找到相关线索。 在引用[1]中,我们看到查询`dba_users`表可以获取用户名(username)和默认表空间等信息: select username,default_tablespace from dba_users order by username; 在引用[3]中,同样有查询`DBA_USERS`表的例子: select t.username, t.account_status, t.created, t.default_tablespace from DBA_USERS t where username= 'ABASE' order by t.created desc; 因此,`all_sequences`视图中的`sequence_owner`字段应该对应于数据库中的用户名(username)。所以,在SQL语句中,`'用户名'`应该替换为具体的数据库用户名。 但是,用户可能不知道具体的用户名是什么。我们可以提供以下方法: 1. 如果用户想查看当前用户拥有的序列,可以使用`USER_SEQUENCES`视图,这样就不需要指定所有者: ```sql SELECT * FROM USER_SEQUENCES WHERE SEQUENCE_NAME LIKE '%INPUT%'; ``` 2. 如果用户需要查看所有用户下的序列(需要有访问`ALL_SEQUENCES`或`DBA_SEQUENCES`的权限),那么需要指定用户名(即序列的所有者)。此时,用户应该填写具体的数据库用户名(username)。 如何获取可用的用户名? 我们可以通过查询`DBA_USERS`视图(需要DBA权限)来获取所有用户名,例如: ```sql SELECT username FROM dba_users; ``` 或者,如果用户没有DBA权限,可以查询`ALL_USERS`视图(但只能看到用户名,不能看到所有用户?)或者当前用户可以看到的其他用户信息。 另外,在引用[2]中,我们看到了嵌套查询的例子,虽然不直接相关,但说明我们可以用查询来获取信息。 因此,回答应该包括: - 解释`sequence_owner`就是数据库用户名。 - 如何获取可用的用户名列表(通过查询`dba_users`)。 - 提供替代方案(使用`USER_SEQUENCES`查看当前用户的序列)。 注意:用户可能需要替换的是具体的用户名,比如他可能知道自己的用户名,或者需要查询所有用户名然后选择一个。 根据以上分析,我们给出回答。 </think>在SQL语句`select * from all_sequences a where a.sequence_owner='用户名' and a.sequence_name like '%INPUT%';`中,**`'用户名'`应替换为具体的数据库用户名**(即序列所有者的账户名)。以下是详细说明: ### 1. **`sequence_owner`的含义** - `sequence_owner`是Oracle系统视图`all_sequences`中的一个字段,表示**序列对象的属主账户**。 - 必须填写**实际存在的数据库用户名**(如`SCOTT`、`HR`等),否则查询结果为空。 ### 2. **如何获取有效用户名** 通过查询系统视图获取所有用户名: ```sql SELECT username FROM dba_users; -- 需要DBA权限 ``` 或当前用户可见的用户名: ```sql SELECT username FROM all_users; -- 普通用户权限 ``` 例如结果可能是: ``` USERNAME ---------- SYS SYSTEM SCOTT HR ``` ### 3. **查询示例** 假设要查询用户`SCOTT`下名称包含`INPUT`的序列: ```sql SELECT * FROM all_sequences WHERE sequence_owner = 'SCOTT' AND sequence_name LIKE '%INPUT%'; ``` ### 4. **替代方案(无需用户名)** - **当前用户的序列**:直接使用`user_sequences`视图(自动过滤属主) ```sql SELECT * FROM user_sequences WHERE sequence_name LIKE '%INPUT%'; ``` - **所有可见序列**:省略`sequence_owner`条件 ```sql SELECT * FROM all_sequences WHERE sequence_name LIKE '%INPUT%'; ``` ### 5. **注意事项** - **权限要求**:查询`all_sequences`需要`SELECT_CATALOG_ROLE`或直接授予的权限[^3]。 - **大小写敏感**:Oracle默认用户名和对象名为**大写**,建议用大写查询(如`'SCOTT'`而非`'scott'`)[^1]。 - **特殊用户名**:若查询系统用户(如`SYS`),需确保有访问权限。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值