【问题标题】:Hibernate Criteria API and field selectors?Hibernate Criteria API 和字段选择器?
【发布时间】:2013-07-24 18:26:31
【问题描述】:

在 Hibernate 中,我喜欢 Criteria API,但它似乎不允许您为特定实体类指定某些列。例如,给定下表:

log_entries
    id : PRIMARY KEY AUTO INCREMENT INTEGER
    timestamp : datetime
    log_level : varchar(25)
    originator : varchar(200)
    message : text

如何使用 Criteria API 编写以下 SQL 查询:

SELECT
    timestamp,
    log_level
FROM
    log_entries
WHERE
    timestamp > '2013-06-05 00:00:00'
    AND
    originator <> 'com.me.myapp.SomeObject'

【问题讨论】:

    标签: java sql hibernate hibernate-criteria


    【解决方案1】:

    你需要使用ProjectionList来获取特定的列记录,按照步骤操作

    Criteria criteria  = session.createCriteria(LogEntries.class);
    
    //select columns
    ProjectionList columns = Projections.projectionList();
    columns.add(Projections.property("timestamp"));
    columns.add(Projections.property("log_level"));
    criteria.setProjection(columns);
    
    //conditions
    Criterion timestamp = Restrictions.gt("timestamp", "2013-06-05 00:00:00");
    Criterion originator = Restrictions.not(Restrictions.eq("originator", "com.me.myapp.SomeObject"));
    LogicalExpression condition = Restrictions.and(timestamp, originator);
    
    criteria.add(condition);
    List results = criteria.list();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-06-13
      • 2011-02-17
      • 2012-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-25
      • 1970-01-01
      相关资源
      最近更新 更多