hiberate 查询时报错,紧急求助

wxwyes 2008-03-18 10:06:12
有这样一个函数

public List getTrades()
{
openSession();//打开session
String hsql = "from tbl_trade";
Query query = session.createQuery(hsql);
List list = query.list() ;
closeSession();//关闭session()
return list;
}
//运行该函数时报错



报错信息:
org.apache.jasper.JasperException: tbl_trade is not mapped [from tbl_trade]


而如果用下面的代码运行则能正确插入数据

public List getTrades()
{
openSession();//打开session
DbTrade trade = new DbTrade();
trade.setTradeId(2);
trade.setTradeName("IT业");
session.save(trade);
//String hsql = "from tbl_trade";
//Query query = session.createQuery(hsql);
//List list = query.list() ;
closeSession();//关闭session()
return null;

}

为什么前面那个查询的函数会报错呢?小弟刚刚学习hiberater,请各位高手不吝赠教.

其中 tbl_trade 的结构为:


create table tbl_trade
(
trade_id int4 not null ,
trade_name varchar(30) not null,
constraint tbl_trade_id_pk primary key(trade_id)
);


DbTrade.java 的代码如下:


public class DbTrade implements Serializable {
private int tradeId;
private String tradeName;
public DbTrade() {
}
public int getTradeId() {
return tradeId;
}
public String getTradeName() {
return tradeName;
}
public void setTradeId(int tradeId) {
this.tradeId = tradeId;
}
public void setTradeName(String tradeName) {
this.tradeName = tradeName;
}
}

TbTrade.hbm.xml 的内容如下:


<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >

<hibernate-mapping>
<class
name="com.callcenter.dicword.db.DbTrade"
table="tbl_trade"
>
<id name="tradeId" type="int" column="trade_id">
<generator class="assigned" />
</id>
<property name="tradeName" type="java.lang.String" column="trade_name" not-null="true" length="30"/>
</class>
</hibernate-mapping>


...全文
93 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
小南瓜瓜 2008-03-19
  • 打赏
  • 举报
回复
HQL用的是类名 你查询的时候用的是表名
TYLEO 2008-03-19
  • 打赏
  • 举报
回复
试一下把
String hsql = "from tbl_trade";
改成
String hsql = "from DbTrade";
wxwyes 2008-03-18
  • 打赏
  • 举报
回复
上面的看不到源代码,现在补上!

有这样一个函数

public List getTrades()
{
openSession();//打开session
String hsql = "from tbl_trade";
Query query = session.createQuery(hsql);
List list = query.list() ;
closeSession();//关闭session()
return list;
}
//运行该函数时报错



报错信息:
org.apache.jasper.JasperException: tbl_trade is not mapped [from tbl_trade]


而如果用下面的代码运行则能正确插入数据

public List getTrades()
{
openSession();//打开session
DbTrade trade = new DbTrade();
trade.setTradeId(2);
trade.setTradeName("IT业");
session.save(trade);
//String hsql = "from tbl_trade";
//Query query = session.createQuery(hsql);
//List list = query.list() ;
closeSession();//关闭session()
return null;

}

为什么前面那个查询的函数会报错呢?小弟刚刚学习hiberater,请各位高手不吝赠教.

其中 tbl_trade 的结构为:


create table tbl_trade
(
trade_id int4 not null ,
trade_name varchar(30) not null,
constraint tbl_trade_id_pk primary key(trade_id)
);


DbTrade.java 的代码如下:


public class DbTrade implements Serializable {
private int tradeId;
private String tradeName;
public DbTrade() {
}
public int getTradeId() {
return tradeId;
}
public String getTradeName() {
return tradeName;
}
public void setTradeId(int tradeId) {
this.tradeId = tradeId;
}
public void setTradeName(String tradeName) {
this.tradeName = tradeName;
}
}

TbTrade.hbm.xml 的内容如下:


<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >

<hibernate-mapping>
<class
name="com.callcenter.dicword.db.DbTrade"
table="tbl_trade"
>
<id name="tradeId" type="int" column="trade_id">
<generator class="assigned" />
</id>
<property name="tradeName" type="java.lang.String" column="trade_name" not-null="true" length="30"/>
</class>
</hibernate-mapping>

51,411

社区成员

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

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