将SQL语句'LIKE'转换为JPQL语句

yok*_*oko 2 sql foreign-keys jpql

我想在eclipse JPQL查询中编写这个SQL语句.它适用于SQL,但我不确定如何在eclipse中编写它.

SELECT * 
FROM hardware h
WHERE h.`Staffid` LIKE '%150%'
Run Code Online (Sandbox Code Playgroud)

我在硬件表中的staffid是员工表的staffid主键的外键.所以硬件表中的工作人员是

private Staff staff;
Run Code Online (Sandbox Code Playgroud)

这是我编写的用于运行搜索的内容:

@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;
    }
}
Run Code Online (Sandbox Code Playgroud)

但它表明

javax.servlet.ServletException: java.lang.IllegalStateException: 
Exception Description: Transaction is currently active 
Run Code Online (Sandbox Code Playgroud)

当我运行搜索.

任何人都可以帮我纠正吗?

Cyr*_*don 5

like运算符仅适用于字符串.所以做这样的事情:

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

链接: