hibernate 奇怪问题

jn0115 2008-05-14 09:12:58
我的vo是这样的 staff.java
===============================================
private Integer num;
private String id;
private String name;
private String pass;
private String qx;
private String tel;
private String address;
================================================
staffDaoImpl里有这么个函数

public Staff queryById(String id) {
// TODO Auto-generated method stub
Staff staff = null;
String hql = "FROM Staff AS n WHERE n.id=?";
Query q = session.createQuery(hql);
q.setString(0, id);
List all = q.list();
if(all.size() > 0) {
staff = (Staff)all.get(0);
}
session.close();
return staff;
}
=====================================================
main函数
public static void main(String[] args){
StaffDaoImpl s = new StaffDaoImpl();
String pass = s.queryById("admin").getPass();
System.out.print(pass);
}
======================================================

hibernate输出的sql 语句却为:
Hibernate: select staff0_.num as num, staff0_.id as id0_, staff0_.name as name0_, staff0_.pass as pass0_, staff0_.qx as qx0_, staff0_.tel as tel0_, staff0_.address as address0_ from jxc.staff staff0_ where staff0_.num=?

为什么是staff0_.num啊,我明明用的是id啊,而且别的字段都可以,就id变成了num????

下面是配置文件

<hibernate-mapping>
<class name="com.ln.vo.Staff" table="staff" catalog="jxc">
<id name="num" type="java.lang.Integer">
<column name="num" />
<generator class="assigned" />
</id>
<property name="id" type="java.lang.String">
<column name="id" length="50" not-null="true" />
</property>
<property name="name" type="java.lang.String">
<column name="name" length="50" />
</property>
<property name="pass" type="java.lang.String">
<column name="pass" length="50" />
</property>
<property name="qx" type="java.lang.String">
<column name="qx" length="100" />
</property>
<property name="tel" type="java.lang.String">
<column name="tel" length="50" />
</property>
<property name="address" type="java.lang.String">
<column name="address" length="11" />
</property>
</class>
</hibernate-mapping>
...全文
94 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
jn0115 2008-05-16
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 zw2455 的回复:]
<id name="num" type="java.lang.Integer">
<column name="num" />
<generator class="assigned" />
</id>
你把主键对应的字段设置称num了,而不是id
[/Quote]

num 是主键,id不是
yellow0323 2008-05-16
  • 打赏
  • 举报
回复
<hibernate-mapping>
<class name="com.ln.vo.Staff" table="staff" catalog="jxc">
<id name="num" type="java.lang.Integer">
<column name="num" />
<generator class="assigned" />
</id>

去掉catalog="jxc" 试试
forestking_xx 2008-05-16
  • 打赏
  • 举报
回复
<id name="num" type="java.lang.Integer">
<column name="num" />
<generator class="assigned" />
</id>
在hql语句中id就是主键,你定义的非主键的id属性是不能被引用到的。
zw2455 2008-05-15
  • 打赏
  • 举报
回复
<id name="num" type="java.lang.Integer">
<column name="num" />
<generator class="assigned" />
</id>
你把主键对应的字段设置称num了,而不是id
dragondml 2008-05-15
  • 打赏
  • 举报
回复
把代码发过来
jn0115 2008-05-14
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 caoyinghui1986 的回复:]
Vo: staff.java
String hql = "FROM Staff AS n WHERE n.id=?";

你的Vo是小写的 s hql 里面是 大写的 S 会不会调用的别的实体类啊。
[/Quote]

类是大写的,发帖时不小心写成小写了
jn0115 2008-05-14
  • 打赏
  • 举报
回复
类是大写的,发帖时不小心写成小写了
jn0115 2008-05-14
  • 打赏
  • 举报
回复
我刚刚碰到啊,我也想不通,我把id改成userid又可以了,不知道为什么
Shine_Panda 2008-05-14
  • 打赏
  • 举报
回复
Vo: staff.java
String hql = "FROM Staff AS n WHERE n.id=?";

你的Vo是小写的 s hql 里面是 大写的 S 会不会调用的别的实体类啊。
Shine_Panda 2008-05-14
  • 打赏
  • 举报
回复
不可能把。

67,538

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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