日期:2014-05-17  浏览次数:20794 次

hibernate查询问题createQuery()有问题
大家好,今天学习hibernate 用的是一对多是自身的映射的
插入,单个查询都没问题,可等查询列表的时候出问题表查出来的数据其它字段都有值只有id全是0不知道为什么?
这个是model类
public class Menu {

private long id;
private String name;
private String url;
private Menu menu;
private Set<Menu>child = new HashSet<Menu>();
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}

public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public Menu getMenu() {
return menu;
}
public void setMenu(Menu menu) {
this.menu = menu;
}
public Set<Menu> getChild() {
return child;
}
public void setChild(Set<Menu> child) {
this.child = child;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}

  这个 是hbm.xml文件
  <hibernate-mapping>

  <class name="com.test.hailang.model.Menu" table="j_menu">
   
  <id column="id" type="long">
  <generator class="increment"></generator>
  </id>
  <property name="name" type="string"></property>
  <property name="url" type="string"></property>
  <set name="child" cascade="all" inverse="true">
  <key column="pid"></key>
  <one-to-many class="com.test.hailang.model.Menu"/>
  </set>
  <many-to-one name="menu" column="pid" class="com.test.hailang.model.Menu">
  </many-to-one>  
  </class>

</hibernate-mapping>
向表中插入数据
  Menu menu = new Menu();
  menu.setName("first");
menu.setUrl("163.com");
Menu m1 = new Menu();
m1.setName("second");
m1.setUrl("126.com");
menu.getChild().add(m1);
m1.setMenu(menu);
Menu menu2 = new Menu();
menu2.setName("third");
menu2.setUrl("sina");
menu.getChild().add(menu2);
menu2.setMenu(menu);

数据库中的数据
id name url pid
1 first 163.com null
2 second 126.com 1
3 third sina 1

这个是查询方法的代码

Transaction trance = session.beginTransaction();
List<Menu> list = null;
Query query=session.createQuery("from Menu");
List l1 = query.list();
list =(List<Menu>) query.list();

当我循环list的时候取别的字段都没问题只有当menu.getId()的时候全是0不知道为什么,有知道的朋友请指点下谢谢了!!!

------解决方案--------------------
你是MyE还是Ec啊,直接百度就行,看语句是没有问题的把语句复制到数据库执行一下,如果没有问,我觉得就是配置问题,你在看看我给你发的那个配置