当前位置: 代码迷 >> Java Web开发 >> net.sf.hibernate.QueryException: undefined alias: id [select id from meis.
  详细解决方案

net.sf.hibernate.QueryException: undefined alias: id [select id from meis.

热度:918   发布时间:2016-04-17 12:43:16.0
一百分求解,初写的一个HIBERNATE问题
总是错误提示
net.sf.hibernate.QueryException: undefined alias: id [select id from meis.hibern 
ate.BULLETIN as BULLETIN ] 

代码
代码 
SessionFactory sf = new Configuration().configure().buildSessionFactory(); 
//打开一个Session 
Session session = sf.openSession(); 
//开始一个事务 
Transaction tx = session.beginTransaction(); 
   
Query query=session.createQuery("select id from BULLETIN as BULLETIN "); 
  
query.list(); 



映射类
package meis.hibernate;

public class BULLETIN 
{
//发布日期

private String id;

private String issuedate;
private String title;

public String getId()

return id; 

public void setId(String id) 

this.id = id; 
}

public String getIssuedate()

return issuedate; 

public void setIssuedate(String issuedate) 

this.issuedate = issuedate; 


public String getTitle()

return title; 

public void setTitle(String title) 

this.title = title; 
}

}


配置文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN" "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">
<hibernate-mapping>
  <class name="meis.hibernate.BULLETIN" table="BULLETIN">
  <id name="id">
  <generator class="assigned" />
  </id>
  <property name="issuedate" /> 
  <property name="title" /> 
  </class> 

</hibernate-mapping>


------解决方案--------------------
Query query=session.createQuery("select id from BULLETIN");

不用as,否则的话,必须是:
select BULLETIN.id from BULLETIN as BULLETIN
------解决方案--------------------
select id from BULLETIN as BULLETIN
改为:
select BULLETIN.id from BULLETIN as BULLETIN
最好不要用与类相同的别名,
建议改成以下的方式:
select bull.id from BULLETIN as bull
------解决方案--------------------
好像你语句都已经正常了,还报错,奇怪

试一试 
Query query=session.createQuery("select bull from Bulletin as bull");
------解决方案--------------------
Query query=session.createQuery("from Bulletin ");

但我只想取几个字段啊,不想全取啊

============================================

select b.id from meis.hibernate.BULLETIN b 

试试完整的类名~~~~
------解决方案--------------------
select b.id from meis.hibernate.BULLETIN b
  相关解决方案