2011-08-03 5 views
2

으로 변환이 SQL 문을 Eclipse JPQL 쿼리에 쓰고 싶습니다. 그것은 SQL에서 작동하지만 일식에서 그것을 작성하는 방법을 잘 모르겠습니다.SQL 문 'LIKE'를 JPQL 문

SELECT * 
FROM hardware h 
WHERE h.`Staffid` LIKE '%150%' 

하드웨어 테이블의 내 staffid는 스태프 테이블의 staffid 기본 키에 대한 외래 키입니다. 그래서 하드웨어 테이블에서 직원이 내가 내 검색 실행에 쓸 것입니다

private Staff staff; 

입니다 :

@SuppressWarnings("unchecked") 
public List<Hardware> searchstaff(Staff a) { 
    try { 
     entityManager.getTransaction().begin();    

     Query query = entityManager 
      .createQuery("SELECT st from Hardware st where st.staff LIKE :x"); 
     query.setParameter("x", a); 

     List<Hardware> list = query.getResultList(); 
     entityManager.getTransaction().commit();   
     return list;      
    } catch (Exception e) { 
     return null; 
    } 
} 

을하지만 검색을 실행할 때 그것은

javax.servlet.ServletException: java.lang.IllegalStateException: 
Exception Description: Transaction is currently active 

을 보여줍니다.

누구든지 수정할 수 있습니까?

답변

5

같은 연산자는 문자열로만 작동합니다. 그래서 그런 식으로 뭔가를 할 :

Query query = entityManager 
    .createQuery("SELECT st from Hardware st where st.staff.id LIKE :x"); 
query.setParameter("x", '%' + a.getId() + '%'); 

링크 :