我用的是myEclipse5.5.1的插件package cn.com.test.hibernatesample.test;import java.beans.Expression;
import java.util.List;import junit.framework.Assert;
import junit.framework.TestCase;import org.hibernate.Criteria;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;import cn.com.test.hibernatesample.factory.HibernateSessionFactory;
import cn.com.test.hibernatesample.model.User;/**
 * @author Administrator
 * 
 */
public class UserTest extends TestCase { // hibenate的session对象
private Session session = null; protected void setUp() throws Exception {
super.setUp();
session = HibernateSessionFactory.getSession();
}         public void testCriteria() {
Transaction tran = null;
tran = session.beginTransaction();
Criteria criteria = session.createCriteria(User.class);
criteria.add(Expression.eq("id", new Integer(1)));
         //报the method eq(String,Integer) is undefined for the type Expression
         //为什么这个函数会找不到?类Expression是存在的,求助
List crit=criteria.list();
Iterator iter = crit.iterator();
while(iter.hasNext()){
User user=(User) iter.next();
System.out.println(user.getName());
}
} protected void tearDown() throws Exception {
super.tearDown();
HibernateSessionFactory.closeSession();
}}

解决方案 »

  1.   

    进入Expression类里看看 它是否有eq这个方法,还有你给的参数是否正确
      

  2.   

    在Expression类里没有eq这个函数,是不是少了什么插件?还是版本问题?
      

  3.   

    在Expression类里没有eq这个函数,是不是少了什么插件?还是版本问题?还有看看Expression父类里有没有eq方法```如果没有这个方法当然不能用,版本的问题呢就不清楚了
      

  4.   

    看是否别的包下也有Exception这个类,
    确认下是否是对应包下的Exception
      

  5.   

    父类是Statement,也没有eq方法
    只是不知道为什么网上还是书上都是可以直接调用的
      

  6.   

    别的包下没有Expression的类郁闷了
      

  7.   

    已经找到问题原因了,之前引用的包是直接加java.beans.Expression,应该引用的是org.hibernate.criterion.Expression
      

  8.   


    hibernate里面有用到的,这个你可以参考下hibernate的Expression类