0

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'
4

1 に答える 1

0

特定の列レコードを取得するには、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();
于 2013-07-25T06:33:21.813 に答える