我试图在休眠状态下执行查询,我在查询中使用StringBuffer。我在createNativeQuery(...)上收到错误消息。当我将鼠标悬停在方法上时,它说


  EntityManager类型的方法createNativeQuery(String,Class)不适用于参数(StringBuffer,Class)。


我试图将方法更改为createNamedQuery(..)createQuery(..),但是它不起作用。有什么建议么?下面是我的代码

    EntityManager em = getEntityManager();
    logger.info("In getTrafficProfileByCosClass2Allocations className :- " +  cosClassAllocation );
    Query query = em.createNativeQuery(queryByCos2Allocation, TrafficProfile.class);
    query.setParameter(1, direction);
    query.setParameter(2, cosClassAllocation.getCos1());
    query.setParameter(3, cosClassAllocation.getCos2());
    return  (TrafficProfile) query.getResultList();

最佳答案

createNativeQuery方法需要一个String作为第一个参数,可以轻松地从StringBuffer创建它。

假设queryByCos2AllocationStringBuffer,请更改以下内容:

Query query = em.createNativeQuery(queryByCos2Allocation, TrafficProfile.class);


对此:

Query query = em.createNativeQuery(queryByCos2Allocation.toString(), TrafficProfile.class);

10-01 18:01