【问题标题】:How to get all data in the table with hibernate?如何使用hibernate获取表中的所有数据?
【发布时间】:2017-08-19 15:40:59
【问题描述】:
public Service getServiceData(){
    return (Service)ServiceDaoImpl.getSession().get(Service.class, new Integer(1));
}

get 方法得到一个。 我想获取jsp页面的所有数据。

【问题讨论】:

  • 你能给我看看链接或例子吗?

标签: java spring hibernate jsp


【解决方案1】:

在 Hibernate 5 中,createCriteria 已被弃用,使用类似的东西

private static <T> List<T> loadAllData(Class<T> type, Session session) {
    CriteriaBuilder builder = session.getCriteriaBuilder();
    CriteriaQuery<T> criteria = builder.createQuery(type);
    criteria.from(type);
    List<T> data = session.createQuery(criteria).getResultList();
    return data;
  }

用法

Session session = HibernateUtils.getSession();
List<User> users = loadAllData(User.class, session);

【讨论】:

  • 在 Hibernate 5 中,createCriteria 已被弃用。使用@Babu 的解决方案。这个通用方法写的很好?
【解决方案2】:

试试下面的代码,用你的实体类替换实体

@SuppressWarnings("unchecked")      
public List<Entity> getAlldata(){       
    try
    {
        return sessionFactory.getCurrentSession().createCriteria(Entity.class).list();
    } catch (Exception e) {
        return new ArrayList<>();
    }
}

【讨论】:

  • 您正在返回 Entity 但您的方法签名声称您的函数将返回 List - 因为这不会编译。我认为您的意思是“返回列表”;
【解决方案3】:

尝试如下从表中获取所有行

@SuppressWarnings("unchecked")
    public List<Service> Service getServiceData() {

         return ServiceDaoImpl.getSession().createQuery("from Service").list(); 
    }

【讨论】:

  • ServiceDaoImpl.getSession().createQuery("from Service").list() 根据问题。查询也可以是select S from Service S。两个查询都是正确的。
  • 你也可以删除session.close();,如果你使用的是@Transactional或xml的spring事务管理。
  • 错误:类型不匹配:无法从服务转换为列表
  • 这个方法返回List,在方法调用使用List list=ServiceDaoImpl.getServiceData() 并迭代这个列表
【解决方案4】:
public List<Service> getServiceAll(){
     return ServiceDaoImpl.getSession().createCriteria(Service.class).list();
}

【讨论】:

  • createQuery("from Product p"); 更好
【解决方案5】:

配置cfg = new Configuration(); cfg.configure("hibernate.cfg.xml");

    SessionFactory factory = cfg.buildSessionFactory();
    Session session = factory.openSession();

    /* Selecting all objects(records) start_______________________ */



    Query qry = session.createQuery("from Product p");

    List l =qry.list();
    System.out.println("Total Number Of Records : "+l.size());
    Iterator it = l.iterator();

    while(it.hasNext())
    {
        Object o = (Object)it.next();
        Product p = (Product)o;
        System.out.println("Product id : "+p.getProductId());
        System.out.println("Product Name : "+p.getProName());
        System.out.println("Product Price : "+p.getPrice());
        System.out.println("----------------------");
    }       

    session.close();
    factory.close();

【讨论】:

    【解决方案6】:

    List&lt;Entity&gt; list = session.createCriteria(Entity.class).list(); 已弃用,

    您可以使用CriteriaBuilder()

            try ( Session session = sessionFactory.openSession()) {
                // Create CriteriaBuilder
                CriteriaBuilder builder = session.getCriteriaBuilder();
    
                // Create CriteriaQuery
                CriteriaQuery<Entity> criteria = builder.createQuery(Entity.class);
    
                // Specify criteria root
                criteria.from(Entity.class);
    
                // Execute query
                List<Entity> entityList = session.createQuery(criteria).getResultList();
    
                for (Entity e : entityList) {
                 // load the data
                }
            }
    

    点击here查看github示例。

    【讨论】:

    • 与旧方法相比,“新”方法真的需要那么长吗?
    猜你喜欢
    • 2016-05-13
    • 1970-01-01
    • 1970-01-01
    • 2017-09-19
    • 2019-01-30
    • 2022-01-20
    • 1970-01-01
    • 1970-01-01
    • 2013-04-13
    相关资源
    最近更新 更多