2016-08-15 38 views
0

错误: 类型Session中的方法get(Class,Serializable)不适用于参数(Class,int)?当我想从表中获取数据我得到这个错误。谁能帮我?

public class Test { 

    public static void main(String[] args) { 

     Configuration config = new Configuration().configure(); 
     SessionFactory factory = config.buildSessionFactory(); 
     Session session = factory.openSession(); 
     Transaction trx = session.beginTransaction(); 
     Sample sample = new Sample(); 
     sample = (Sample)session.get(Sample.class, 1); 
     trx.commit(); 
     System.out.println("success"); 
     session.close(); 
    } 
} 

public class Sample { 
    private Integer id; 
    private String name; 

    public Integer getId() { 
     return id; 
    } 
    public void setId(Integer id) { 
     this.id = id; 
    } 
    public String getName() { 
     return name; 
    } 
    public void setName(String name) { 
     this.name = name; 
    } 
} 
+1

正如错误中所述,第二个参数不能只是一个Integer,但它必须事先定义为Serializable。我最好的建议是为这个普通查询编写一个通用的实现,就像[这个类](https://github.com/luciomartinez/hibernate/blob/master/Registro/src/registro/dao/GenericDaoImpl.java)。如果你愿意尝试内联的解决方案,可以使用[SerializationUtils]中的'serialize'方法(https://commons.apache.org/proper/commons-lang/javadocs/api-2.6/org/apache /commons/lang/SerializationUtils.html)类可以工作,但不能确定。 – Lucio

+0

如果这对你有用,我会在稍后回答一个答案时写下一些清洁剂:-) – Lucio

回答

0

你应该使用简单的整型

... 
sample = (Sample)session.get(Sample.class, new Integer(1)); 
... 

代替。

+0

谢谢你使用streetturtle –

+0

它适合你吗?如果是,请将答案标记为已接受。 – streetturtle

相关问题