2015-12-11 3 views
1
@Entity 
public class car { 
    @Id 
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    private int id_car; 
    @OneToOne 
    private repair id_repair; 
} 

@Entity 
public class repair { 
    @Id 
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    private int id_repair; 
    @OneToOne 
    @JoinColumn(name="id_car") 
    private car id_car; 
} 

я написал SQL запрос и это то, что я хочу получитьИспользование Hibernate, чтобы выбрать наиболее общее значение

SELECT id_car, 
     COUNT(*) AS c 
FROM repair 
GROUP BY id_car 
ORDER BY c DESC 
LIMIT 5 

Как я могу добиться этого с помощью Hibernate? Я хочу, чтобы получить «id_car» и количество вхождений.

ответ

0
List results = session.createCriteria(Car.class) 
    .setProjection(Projections.projectionList() 
     .add(Projections.rowCount(),"rCount") 
     .add(Projections.groupProperty("id_car")) 
    ) 
    .addOrder(Order.desc("rCount")) 
    .setMaxResults(5) 
    .list(); 
+0

ошибка в строке ".addOrder (Car.desc (" RCOUNT "))" –

+0

какие ошибки. укажите PLS. – OPK

+0

не может найти символ sybmol: метод desc (String) местоположение: класс автомобиля –

0
Criteria cr = session.createCriteria(Repair.class) 
.setProjection(Projections.projectionList() 
    .add(Projections.groupProperty("id_car")) 
    .add(Projections.rowCount(), "rCount")) 
.addOrder(Order.asc("rCount")) 
.setMaxResults(5); 

if(cr.list().size() > 0) { 
    for(Object o : cr.list()) { 
     Object[] row = (Object[]) o; 
     // Here row[0] will have id_car and 
     // row[1] will have the number of entry in the database. 
    } 
} 
Смежные вопросы