如何从Java中的主列表中检索数据

时间:2015-09-09 12:49:03

标签: java hibernate generics

我有10-12个表,我的主数据在那里,我必须使用hibernate的findAll()工具加载它们。

所以对于所有这些10-12表我都需要编写类似这样的方法

public List<XYZType> getAllXYZType() {
    return XYZRepository.findAll();
}

因此,对于不同的实体,这种代码将重复10-12次。 有什么方法可以让它变得通用吗?

3 个答案:

答案 0 :(得分:0)

public <T> List<T> getAll(final Class<T> type) {
  Session session = sessionFactory.getCurrentSession();
  Criteria crit = session.createCriteria(type);
  return crit.list();
}

为了使用它,只需将所需的类传递给函数,它将返回列表。

答案 1 :(得分:0)

在这种情况下,您需要将其设为通用,我认为 Abstract Factory Pattern 就是您要找的。

您的代码应该是这样的:

 public interface GenericDAO < T, ID extends Serializable > {
    T findById(ID id);
    List < T > findAll();
 }

请查看 DAO Factory patterns with Hibernate 以获取更多信息。

答案 2 :(得分:0)

public static <T> List<T> getLst(final Class<T> beanClass) {
    List<T> lst = new ArrayList<T>();
    Session sess = MyUtils.getSessionFactory().openSession();
    try {
        Criteria cr= sess.createCriteria(beanClass);
        lst = cr.list();
    } catch (Exception ex) {
        ex.printStackTrace();
    } finally {
        sess.close();
    }
    return lst;
}