页面出错信息如下:
org.springframework.orm.hibernate3.HibernateQueryException: DataDist is not mapped [ from DataDist o where o.fieldvalue='Vip']; nested exception is org.hibernate.hql.ast.QuerySyntaxException: DataDist is not mapped [ from DataDist o where o.fieldvalue='Vip']
org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:657)
程序如下:
List<DataDist> dataDist = getHibernateTemplate().find(
" from DataDist o where o.dataDistPK.entityname1='" + entityname
+ "'");
java.util.Iterator<DataDist> iterator = dataDist.iterator();配置如下:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><hibernate-mapping>
<class name="bean.Datadist" table="datadist">
<composite-id name="dataDistPK" class="bean.DataDistPK">
   <key-property name="entityname1" column="entityname" type="string"/>
   <key-property name="fieldname" column="fieldname" type="string"/>
   <key-property name="fieldkey" column="fieldkey" type="string"/>
</composite-id>
<property name="fieldvalue" type="string" column="fieldvalue" length="32"/> </class>
</hibernate-mapping>package bean;public class DataDist {
private DataDistPK dataDistPK;
private String fieldvalue;
public DataDistPK getDataDistPK() {
return dataDistPK;
} public void setDataDistPK(DataDistPK dataDistPK) {
this.dataDistPK = dataDistPK;
} public String getFieldvalue() {
return fieldvalue;
} public void setFieldvalue(String fieldvalue) {
this.fieldvalue = fieldvalue;
}
}package bean;import java.io.Serializable;public class DataDistPK implements Serializable {
/**
 * 
 */
private static final long serialVersionUID = 1L;
private  String entityname1;
private  String fieldname;
private  String fieldkey;
public void setFieldname(String fieldname) {
this.fieldname = fieldname;
}
public void setFieldkey(String fieldkey) {
this.fieldkey = fieldkey;
}
public DataDistPK(String entityname1,String fieldname,String fieldkey){
this.entityname1=entityname1;
this.fieldname=fieldname;

this.fieldkey=fieldkey;

}
public boolean equals(Object o){
if(this==o) return true;
if(!(o instanceof DataDistPK)) return false;
final DataDistPK other=(DataDistPK) o;
if(!entityname1.equals(other.getEntityname1())) return false;
if(!fieldname.equals(other.getFieldname())) return false;
if(!fieldkey.equals(other.getFieldkey())) return false;
return true;
} public String getEntityname1() {
return entityname1;
}
public void setEntityname1(String entityname1) {
this.entityname1 = entityname1;
}
public String getFieldname() {
return fieldname;
}
public String getFieldkey() {
return fieldkey;
}
public int hashCode(){
int result;
result=(entityname1==null?0:entityname1.hashCode());
result=29*result+(fieldname==null?0:fieldname.hashCode());
result=29*result+(fieldkey==null?0:fieldkey.hashCode());
return result;

}}

解决方案 »

  1.   

    http://www.cnblogs.com/lyj/archive/2009/10/18/nh-wiki-compositeid.html
      

  2.   

    我也遇见过 加上全名
    from bean.Datadist o where o.fieldvalue='Vip'这样试试
      

  3.   

     DataDist is not mapped 
    这是错误提示!    这个表没有被映射,所以执行什么都没用!   修改下配置文件!
      

  4.   

    <class name="bean.Datadist" table="datadist">里的Datadist和外面的DataDist一个大写D.一个小写d
      

  5.   


    table="datadist" 这是数据库表名 看清楚 
      

  6.   

    <class name="bean.Datadist" table="datadist"> 应该是 name=="bean.DataDist"