以下SQL脚本适用于mysql:
select
LOGGING_ID,
SUM(NORMAL_HOURS +OVERTIME_HOURS +DOUBLE_TIME_HOURS) AS TOTAL_HOURS
FROM
LOGGING_DETAIL
GROUP BY 1
我如何与我的实体经理一起做这件事?:
@PersistenceContext
private EntityManager database;
List<loggingDetail> loggingDetail = new ArrayList<loggingDetail>();
timeLoggingDetail = database.createQuery("").getResultList();
最后我想要Logging_id以及该ID的总小时数。 感谢
答案 0 :(得分:1)
实体管理器可以调用您在jpa实体对象上设置的命名查询。我假设你在这种情况下有一个实体对象。我想如果你没有那个对象,你可以在查询中这样做,就像你在问题中列出的一样。我喜欢在实体对象中使用它,因此其他调用可以重用它。
实体对象 -
@Entity
@NamedQuery( name = "loggingDetail.getLoggingId", query = "select
LOGGING_ID,SUM(NORMAL_HOURS +OVERTIME_HOURS +DOUBLE_TIME_HOURS) AS TOTAL_HOURS
FROM LOGGING_DETAIL GROUP BY 1" )
public class LoggingDetail
{ ...}
实体管理器调用将不会获得完全填充的loggingDetail对象,因为查询未返回完整对象,因此您必须遍历对象数组 -
@PersistenceContext
private EntityManager database;
Query query = database.createNamedQuery( "loggingDetail.getLoggingId" );
List<Object[]> obj = query.getResultList();
for( Object[] objects : obj )
{
String logId = (String) objects[0] ;
String logTime = (String) objects[1] ;
}