oracle 的sql语句问题

Allanheqing 2011-06-21 10:20:37
大家好,本人最近用SSH2+oracle10做一个项目,但是遇到了一个问题,就是在实现登录的时候myeclipse报了一个错sql语句命令没有结束的错误java.sql.SQLException: ORA-00933: SQL command not properly ended
我的后台登录代码是:
DetachedCriteria dc=DetachedCriteria.forClass(LoginUser.class).add(Expression.eq("cuser", name.trim())).add(Expression.eq("cpwd",pwd.trim()));
ArrayList<LoginUser> loginUserList=(ArrayList<LoginUser>) this.getHibernateTemplate().findByCriteria(dc);

后台打印出来的sql语句是select loginuser0_.ALERT_CUser as ALERT1_53_, loginuser0_.ALERT_number as ALERT2_53_, loginuser0_.ALERT_CName as ALERT3_53_, loginuser0_.ALERT_CPwd as ALERT4_53_, loginuser0_.ALERT_CType as ALERT5_53_, loginuser0_.ALERT_CState as ALERT6_53_, loginuser0_.ALERT_CFlag as ALERT7_53_ from cserver.SYSTEM.LoginUsers loginuser0_ where CUser='sdfs' and CPwd='sdfs';

我的hibernate映射文件是:
<hibernate-mapping package="com.adsserver.entity">
<class name="LoginUser" table="LoginUsers" schema="SYSTEM" catalog="cserver">
<id name="cuser" type="java.lang.String">
<column name="ALERT_CUser" length="50" not-null="false"/>
<generator class="assigned"></generator>
</id>
<property name="number" type="java.lang.String">
<column name="ALERT_number" length="20" not-null="false" />
</property>
<property name="cname" type="java.lang.String">
<column name="ALERT_CName" length="50" not-null="true" />
</property>
<property name="cpwd" type="java.lang.String">
<column name="ALERT_CPwd" length="50" not-null="true" />
</property>
<property name="ctype" type="java.lang.String">
<column name="ALERT_CType" length="50" not-null="true" />
</property>
<property name="cstate" type="java.lang.Short">
<column name="ALERT_CState" not-null="true" />
</property>
<property name="cflag" type="java.lang.Short">
<column name="ALERT_CFlag" not-null="true" />
</property>
</class>
</hibernate-mapping>

hibernate配置文件:
<hibernate-configuration>

<session-factory>
<property name="connection.url">
jdbc:oracle:thin:@localhost:1521:cserver
</property>
<property name="connection.username">SYSTEM</property>
<property name="connection.password">allan</property>
<property name="connection.driver_class">
oracle.jdbc.driver.OracleDriver
</property>
<property name="dialect">
org.hibernate.dialect.Oracle9Dialect
</property>

请大家帮帮忙哈,小弟不胜感激..
...全文
129 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Allanheqing 2011-06-24
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 tangren 的回复:]
<class name="LoginUser" table="LoginUsers" schema="SYSTEM" catalog="cserver">
把catalog这个属性去掉!!
它可能是用来指定数据库名称。oracle不需要
[/Quote]

谢谢,这个问题是我用sql2005导出数据到oracle中,然后再PL/develop中查询为什么那么表明属性要添加"",怎么去掉它啊,是不是在sql2005导出到oracle就自动加上了。。
Allanheqing 2011-06-22
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 tangren 的回复:]
SELECT loginuser0_.ALERT_CUser AS ALERT1_53_,
loginuser0_.ALERT_number AS ALERT2_53_,
loginuser0_.ALERT_CName AS ALERT3_53_,
loginuser0_.ALERT_CPwd AS ALERT4_53_,
loginuser0_.ALERT_CType A……
[/Quote]

ORA-00942: 表或视图不存在谢谢哈,那个cserver数据库名称,我按照你说的那样做把cserver去掉但是要报一个错是什么原因啊?
tangren 2011-06-22
  • 打赏
  • 举报
回复
<class name="LoginUser" table="LoginUsers" schema="SYSTEM" catalog="cserver">
把catalog这个属性去掉!!
它可能是用来指定数据库名称。oracle不需要
tangren 2011-06-22
  • 打赏
  • 举报
回复
SELECT loginuser0_.ALERT_CUser AS ALERT1_53_,
loginuser0_.ALERT_number AS ALERT2_53_,
loginuser0_.ALERT_CName AS ALERT3_53_,
loginuser0_.ALERT_CPwd AS ALERT4_53_,
loginuser0_.ALERT_CType AS ALERT5_53_,
loginuser0_.ALERT_CState AS ALERT6_53_,
loginuser0_.ALERT_CFlag AS ALERT7_53_
FROM cserver.SYSTEM.LoginUsers loginuser0_
WHERE CUser = 'sdfs'
AND CPwd = 'sdfs';

这儿的cserver是什么?
oracle中没有三级句点引用方式吧,一般是是两级,
<模式(用户)名>.<表名>

如果system是用户名,那么cserver则是多余的,不能加!
hyee 2011-06-21
  • 打赏
  • 举报
回复
你的sql的最后是不是多了一个分号啊
jimmylin040 2011-06-21
  • 打赏
  • 举报
回复
看到这帖子的排版和结帖率,我可耻睇匿了
Allanheqing 2011-06-21
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 yangting_lisa 的回复:]
从log显示信息是说你的sql有错误,你可以把你的sql拿出来运行下,看看有什么错误。lz要学会单点调试哦
[/Quote]

那个sql在PL/develop运行了就是报ORA-00933: SQL command not properly ended
Allanheqing 2011-06-21
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 license2kill 的回复:]
from cserver.SYSTEM.LoginUsers loginuser0_ where 这里两表间咋没逗号,结尾分号去掉试试
[/Quote]

不好意思哈,那个分号没有哈,是我加上去的,在hibernate打印出来是没有的。loginuser0_ 这个不是表哈,是LoginUsers别名.
小笨熊 2011-06-21
  • 打赏
  • 举报
回复
从log显示信息是说你的sql有错误,你可以把你的sql拿出来运行下,看看有什么错误。lz要学会单点调试哦
License2Kill 2011-06-21
  • 打赏
  • 举报
回复
from cserver.SYSTEM.LoginUsers loginuser0_ where 这里两表间咋没逗号,结尾分号去掉试试

3,491

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧