【问题标题】:Hibernate - How to query using CLAUSES?Hibernate - 如何使用条款进行查询?
【发布时间】:2015-08-12 07:12:23
【问题描述】:

我正在寻找用于插入、删除更新和选择数据的 Hibernate Spring 代码。在阅读教程时,我不明白如何在 Hibernate 中获取、更新、插入等数据。我从这里得到了一个教程http://mkyong.com/hibernate/hibernate-criteria-examples

public static List getStockDailyRecordCriteria(Date startDate,Date endDate,
        Long volume,Session session){

    Criteria criteria = session.createCriteria(StockDailyRecord.class);
    if(startDate!=null){
        criteria.add(Expression.ge("date",startDate));
    }
    if(endDate!=null){
        criteria.add(Expression.le("date",endDate));
    }
    if(volume!=null){
        criteria.add(Expression.ge("volume",volume));
    }
    criteria.addOrder(Order.asc("date"));

    return criteria.list();
  }

这里似乎在选择数据,但没有 SELECT 查询。我们如何知道它正在从数据库中检索数据?

我也从这里http://codejava.net/frameworks/spring/spring-4-and-hibernate-4-integration-tutorial-part-1-xml-configuration 得到了这段代码,它似乎可以获取数据,但我不明白表名和查询在哪里使用?

@Override
    @Transactional
    public List<User> list() {
        @SuppressWarnings("unchecked")
        List<User> listUser = (List<User>) sessionFactory.getCurrentSession()
                .createCriteria(User.class)
                .setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY).list();

        return listUser;
    }

如何在数据库中更新、删除、插入数据? 如何使用 WHERE、ORDER BY、GROUP BY、HAVING、COUNT 等条件来获取、删除、更新、插入数据?

【问题讨论】:

  • 但是你两分钟前刚刚发布了同样的问题。
  • @BranislavLazic,让问题更清楚了。

标签: java spring hibernate


【解决方案1】:

假设 StockDailyRecord 类映射到数据库中的表 stockdailyrecord

Criteria criteria = session.createCriteria(StockDailyRecord.class);

这里就像一个 select 语句,这个 Criteria 充当 select * from stockdailyrecord

然后将一些条件添加到此标准中

criteria.add(Expression.ge("date",startDate));

这里像 where date >= startDate

criteria.add(Expression.le("date",endDate));

这里就像日期

criteria.addOrder(Order.asc("date"));

按升序对记录进行排序 ORDERBY criteria.addOrder , GROUP BY criteria.add(Projections.groupProperty("someColumn")), COUNT criteria.add(Projections.count("someColumn" ))

查看 this 链接会有所帮助

【讨论】:

  • 好消息!更新、删除和插入查询呢?他们是如何被处决的?您还使用了ge & le,但您提供的链接,他们使用gt & lt 表示> &
  • gt is > & lt is insert 你可以创建你的对象然后 session.save(myObj) ,删除,更新使用 HQL 这是最好的选择,我想,Criteria的主要目的只是为了检索数据link总结一下
猜你喜欢
  • 2012-08-11
  • 1970-01-01
  • 1970-01-01
  • 2011-08-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多