Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java,Hibernate-如何创建通用的getByColumnValue()方法?_Java_Hibernate_Generics_Types - Fatal编程技术网

Java,Hibernate-如何创建通用的getByColumnValue()方法?

Java,Hibernate-如何创建通用的getByColumnValue()方法?,java,hibernate,generics,types,Java,Hibernate,Generics,Types,我想编写一个通用方法,用于搜索列值并返回现有对象或类型为T的新对象T有一个数据字段String name,其中包含相应的getName() 这不适用于具有名称列的对象: static public <T> T getByName(Class<T> type, final String name) { Session session = sessionFactory.openSession(); session.beginTransaction();

我想编写一个通用方法,用于搜索列值并返回现有对象或类型为T的新对象
T
有一个数据字段
String name
,其中包含相应的
getName()

这不适用于具有名称列的对象:

static public <T> T getByName(Class<T> type, final String name) {
    Session session = sessionFactory.openSession();
    session.beginTransaction();
    List<T> list = session.createCriteria(type).list();
    session.getTransaction().commit();
    session.close();
    for (T entry : list) {
        if (entry.getName().equals(name)) {
            return entry;
        }
    }
    return new Class<T>(name);//or return null and create object in the calling method
}
为此,您应使用:

Query q = s.createQuery("from " + type.getName() + " where name = :name");
q.setParameter("name", name);
List<T> result = q.list();
Query q=s.createQuery(“from”+type.getName()+“其中name=:name”);
q、 setParameter(“名称”,名称);
列表结果=q.List();

您甚至可以编写一个方法,通过将列名传递给该方法来查询任意列。

谢谢,但我认为它应该是
q.setParameter(“name”,name)
Query q = s.createQuery("from " + type.getName() + " where name = :name");
q.setParameter("name", name);
List<T> result = q.list();