使用Hibernate无法读取数据,报错“count not execute query”。高手请进。

myth_2002 2005-11-16 09:55:24
我照着网上的一个例子,用MyEclipse做一个Struts+Hibernate的简单例子。
Hibernate所需的持久化类(名字叫“Yaopin”,对应库中的表名是“yaopin”),配置文件都用Myeclipse自动生成了。
现在要使用Hibernate来查询数据,出现错误。具体代码如下:

public List getYpList() {
Session session = null;
try {
session = SessionFactory.currentSession();
//跟踪代码发现,session是有值得,不为null
//List list=session.createCriteria(Yaopin.class).list();
List list=session.createQuery("from Yaopin").list();
//用这两种方法都无法读出数据来,报错“count not execute query”
return list;
} catch (HibernateException e) {
System.err.println("HibernateException:" + e.getMessage());
throw new RuntimeException();
} finally {
if (session != null) {
try {
SessionFactory.closeSession();
} catch (HibernateException e) {

}
session = null;
}

}

}

如果需要看hibernate的配置文件,我可以贴出来
...全文
480 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
myth_2002 2005-11-17
  • 打赏
  • 举报
回复
晕,用了“<property name="hibernate.hbm2ddl.auto">create</property> ”把我的yaopin表的数据给删除了
myth_2002 2005-11-17
  • 打赏
  • 举报
回复
可是我原来库里面有这个yaopin表阿,怎么让我取到原来的药品表里的数据呢?
myth822 2005-11-17
  • 打赏
  • 举报
回复
晕....

<property name="hibernate.hbm2ddl.auto">create</property>

是新建这个表,里面当然没有数据了
myth_2002 2005-11-17
  • 打赏
  • 举报
回复
有没有人啊
myth822 2005-11-16
  • 打赏
  • 举报
回复
名字确实挺像 ^_^
myth822 2005-11-16
  • 打赏
  • 举报
回复
在你的hibernate.cfg.xml里面加一句
<property name="hibernate.hbm2ddl.auto">create</property>

自动生成这个表看看
myth_2002 2005-11-16
  • 打赏
  • 举报
回复
我修改了Hibernate.cfg.xml.
增加了一个property
<property name="show_sql">true</property>
作用是在控制台显示执行的SQL,结果为
Hibernate: select yaopin0_.PRHUAXUE as PRHUAXUE, yaopin0_.YPINDEX as YPINDEX, yaopin0_.YAOPINNAME as YAOPINNAME, yaopin0_.ZBINDEX as ZBINDEX, yaopin0_.YPJXCODE as YPJXCODE, yaopin0_.GUIGE as GUIGE, yaopin0_.YAOPINTYPE as YAOPINTYPE, yaopin0_.REQNUMBER as REQNUMBER, yaopin0_.YPJXINFO as YPJXINFO, yaopin0_.YPTYPEINFO as YPTYPEINFO, yaopin0_.PY as PY, yaopin0_.REMARK as REMARK, yaopin0_.YPGROUP as YPGROUP, yaopin0_.ID as ID, yaopin0_.YPLBID as YPLBID, yaopin0_.YPDLID as YPDLID, yaopin0_.YPDLNAME as YPDLNAME, yaopin0_.PERCENTAGE as PERCENTAGE, yaopin0_.CFWT_N as CFWT_N, yaopin0_.EDITUSER as EDITUSER, yaopin0_.HOSPOST as HOSPOST, yaopin0_.MEDSAFETY as MEDSAFETY, yaopin0_.PRICEORG as PRICEORG, yaopin0_.MEDLISTID as MEDLISTID, yaopin0_.HOSNAME as HOSNAME, yaopin0_.GUIGEFROM as GUIGEFROM, yaopin0_.PRICETYPE as PRICETYPE, yaopin0_.BSMEDNAME as BSMEDNAME, yaopin0_.BSMEDDOSENAME as BSMEDDO29_ from YAOPIN yaopin0_

放到数据库里面可以正常的查询出数据。。。

那位大哥知道这到底怎么回事啊?
myth_2002 2005-11-16
  • 打赏
  • 举报
回复
在Myeclipse里面可以连接上数据库
a9 2005-11-16
  • 打赏
  • 举报
回复
怀疑1楼是2楼的小号
a9 2005-11-16
  • 打赏
  • 举报
回复
mark
随风奔跑 2005-11-16
  • 打赏
  • 举报
回复
不懂。up一下。
hxdosa 2005-11-16
  • 打赏
  • 举报
回复
代码好长。。。帮你up下
myth_2002 2005-11-16
  • 打赏
  • 举报
回复
hibernate.cfg.xml
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 2.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-2.0.dtd">

<!-- DO NOT EDIT: This is a generated file that is synchronized -->
<!-- by MyEclipse Hibernate tool integration. -->
<hibernate-configuration>

<session-factory>
<!-- properties -->
<property name="connection.username">*****</property>
<property name="connection.url">jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.0.204)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=yiyao)(SERVER=DEDICATED)))</property>
<property name="dialect">net.sf.hibernate.dialect.Oracle9Dialect</property>
<property name="connection.password">******</property>
<property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>

<!-- mapping files -->
<mapping resource="com/StrutsTest/hibernate/Yaopin.hbm.xml"/>

</session-factory>

</hibernate-configuration>
myth_2002 2005-11-16
  • 打赏
  • 举报
回复
yaopin.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 2.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd" >

<!-- DO NOT EDIT: This is a generated file that is synchronized -->
<!-- by MyEclipse Hibernate tool integration. -->
<!-- Created Mon Nov 14 15:43:55 CST 2005 -->
<hibernate-mapping package="com.StrutsTest.hibernate">

<class name="Yaopin" table="YAOPIN">
<id name="prhuaxue" column="PRHUAXUE" type="java.lang.String">
<generator class="native"/>
</id>

<property name="ypindex" column="YPINDEX" type="java.lang.Long" />
<property name="yaopinname" column="YAOPINNAME" type="java.lang.String" not-null="true" />
<property name="zbindex" column="ZBINDEX" type="java.lang.Long" />
<property name="ypjxcode" column="YPJXCODE" type="java.lang.Short" not-null="true" />
<property name="guige" column="GUIGE" type="java.lang.String" not-null="true" />
<property name="yaopintype" column="YAOPINTYPE" type="java.lang.Short" not-null="true" />
<property name="reqnumber" column="REQNUMBER" type="java.lang.Long" />
<property name="ypjxinfo" column="YPJXINFO" type="java.lang.String" not-null="true" />
<property name="yptypeinfo" column="YPTYPEINFO" type="java.lang.String" not-null="true" />
<property name="py" column="PY" type="java.lang.String" />
<property name="remark" column="REMARK" type="java.lang.Long" not-null="true" />
<property name="ypgroup" column="YPGROUP" type="java.lang.Long" />
<property name="id" column="ID" type="java.lang.Long" />
<property name="yplbid" column="YPLBID" type="java.lang.Long" />
<property name="ypdlid" column="YPDLID" type="java.lang.String" />
<property name="ypdlname" column="YPDLNAME" type="java.lang.String" />
<property name="percentage" column="PERCENTAGE" type="java.lang.Double" />
<property name="cfwtN" column="CFWT_N" type="java.lang.Long" not-null="true" />
<property name="edituser" column="EDITUSER" type="java.lang.String" />
<property name="hospost" column="HOSPOST" type="java.lang.Long" />
<property name="medsafety" column="MEDSAFETY" type="java.lang.String" />
<property name="priceorg" column="PRICEORG" type="java.lang.String" />
<property name="medlistid" column="MEDLISTID" type="java.lang.String" />
<property name="hosname" column="HOSNAME" type="java.lang.String" />
<property name="guigefrom" column="GUIGEFROM" type="java.lang.String" />
<property name="pricetype" column="PRICETYPE" type="java.lang.String" />
<property name="bsmedname" column="BSMEDNAME" type="java.lang.String" />
<property name="bsmeddosename" column="BSMEDDOSENAME" type="java.lang.String" />
</class>

</hibernate-mapping>
myth_2002 2005-11-16
  • 打赏
  • 举报
回复
net.sf.hibernate.exception.GenericJDBCException: Could not execute query
at net.sf.hibernate.exception.ErrorCodeConverter.handledNonSpecificException(ErrorCodeConverter.java:90)
at net.sf.hibernate.exception.ErrorCodeConverter.convert(ErrorCodeConverter.java:79)
at net.sf.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:30)
at net.sf.hibernate.impl.SessionImpl.convert(SessionImpl.java:4110)
at net.sf.hibernate.impl.SessionImpl.find(SessionImpl.java:1556)
at net.sf.hibernate.impl.QueryImpl.list(QueryImpl.java:39)
at com.StrutsTest.hibernate.YpService.getYpList(YpService.java:80)
at com.StrutsTest.hibernate.YpService.main(YpService.java:123)
Caused by: java.sql.SQLException: 违反协议
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java)
at oracle.jdbc.dbaccess.DBError.check_error(DBError.java)
at oracle.jdbc.ttc7.Oclose.receive(Oclose.java)
at oracle.jdbc.ttc7.TTC7Protocol.close(TTC7Protocol.java)
at oracle.jdbc.driver.OracleStatement.close(OracleStatement.java)
at oracle.jdbc.driver.OraclePreparedStatement.close(OraclePreparedStatement.java)
at net.sf.hibernate.impl.BatcherImpl.closePreparedStatement(BatcherImpl.java:273)
at net.sf.hibernate.impl.BatcherImpl.closeStatement(BatcherImpl.java:141)
at net.sf.hibernate.impl.BatcherImpl.closeQueryStatement(BatcherImpl.java:157)
at net.sf.hibernate.impl.BatcherImpl.closeQueryStatement(BatcherImpl.java:104)
at net.sf.hibernate.loader.Loader.doQuery(Loader.java:302)
at net.sf.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:133)
at net.sf.hibernate.loader.Loader.doList(Loader.java:1033)
at net.sf.hibernate.loader.Loader.list(Loader.java:1024)
at net.sf.hibernate.hql.QueryTranslator.list(QueryTranslator.java:854)
at net.sf.hibernate.impl.SessionImpl.find(SessionImpl.java:1553)
... 3 more
Exception in thread "main" java.lang.RuntimeException
at com.StrutsTest.hibernate.YpService.getYpList(YpService.java:84)
at com.StrutsTest.hibernate.YpService.main(YpService.java:123)
myth822 2005-11-16
  • 打赏
  • 举报
回复
你详细的错误信息
myth_2002 2005-11-16
  • 打赏
  • 举报
回复
郁闷啊,按myth822的说法做了,程序没报错,但是取出的记录是零条!?我数据库里面明明有一千多条数据
myth_2002 2005-11-16
  • 打赏
  • 举报
回复
楼上说“自动生成这个表”,生成哪个表?

50,530

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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