【问题标题】:Convert SQL statement 'LIKE' to JPQL statement将 SQL 语句“LIKE”转换为 JPQL 语句
【发布时间】:2011-10-18 19:54:18
【问题描述】:

我想在 Eclipse JPQL 查询中编写这个 SQL 语句。它可以在 SQL 中运行,但我不确定如何在 eclipse 中编写它。

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

我在hardware 表中的staffid 是staff 表的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 

当我运行搜索时。

谁能帮我改正?

【问题讨论】:

    标签: sql foreign-keys jpql


    【解决方案1】:

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

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

    链接:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-13
      • 1970-01-01
      • 2016-03-29
      • 1970-01-01
      • 1970-01-01
      • 2021-01-08
      • 2013-02-15
      • 2019-07-03
      相关资源
      最近更新 更多