当我使用泛型时,如何为get()传递参数

时间:2017-12-07 01:16:13

标签: java hibernate session generics

public class Test {

public static void main(String[] args) throws Exception 
{
    Generic<Customer> x = new Generic(Customer.class);
    Customer cust = x.get("1");
    System.out.println(cust.getFullname());
}


class Generic<T> {
private Class<T> clazz;

public Generic(Class<T> clazz) {
    this.clazz = clazz;
}

public  Session openSession() {
    Configuration config = new AnnotationConfiguration().configure();
    SessionFactory sf = config.buildSessionFactory();
    Session session = sf.openSession();
    return session;
}

public T get(String id) {
    Session session = openSession();
    T t = (T) session.get(clazz.getClass(), id);
    return t;
}

}

当我运行这个程序时,它除了我的Customer.class(Customer只是一个实体类)并抛出异常
 org.hibernate.MappingException:未知实体:java.lang.Class.Please解释原因

1 个答案:

答案 0 :(得分:0)

您需要传递Class<T>类型的其他Class对象。

编辑:我可能错了,没有使用Hibernate太长时间。某些版本的get()需要一个Class对象。

无论哪种方式,都要查找Session.get here

的定义