EclipseLink小于子句不能正常工作

时间:2015-12-11 11:49:59

标签: java jpa persistence eclipselink

当我使用命名查询或本机查询来使用少于'<'来过滤数据时,我面临着一种奇怪的情况。或大于'>'标志。 例如,我有一个代码目录,我通过这些代码和第一个代码导航#34; 000481"下一个代码是" -PR。 2L"(这是正确的)但是前面的" -PR。 2L"是" PR。 2L"不是" 000481"怎么回事。

如果我通过执行命令运行查询...结果是正确的。 如果重要,我使用Mssql 2005服务器和持久性EclipseLink jpa 2.1

先谢谢!

@SuppressWarnings("unchecked")
public Cods previous(String cod, String codUnit) {
    EntityManager em = getEntityManager();
    em.setProperty("codUnit", codUnit);
    Query query = em.createQuery("SELECT c FROM Cods c WHERE c.cod < :cod ORDER BY c.cod DESC");
    query.setParameter("cod", cod);
    Cods p = null;
    try {
        List<Cods> lP = query.setMaxResults(1).getResultList();
        if (!lP.isEmpty()) {
            p = (Cods) lP.get(0);
        }
    } finally {
        em.close();
    }


    return p;
}

1 个答案:

答案 0 :(得分:0)

如果我改变下面的代码,问题就解决了。但我不知道为什么第一个代码出错了。 如果有人知道我会很高兴。 谢谢!

 public Cods previous(String cod, String codUnit)  {
    EntityManager em = getEntityManager();
    em.setProperty("codUnit", codUnit);
    Query query = em.createQuery("SELECT c FROM Cods c WHERE c.cod < cast(:cod as varchar(15)) ORDER BY c.cod DESC");
    query.setParameter("cod",cod);
    Cods p = null;
    try {
        List<Cods> lP = query.setMaxResults(1).getResultList();
        if (!lP.isEmpty()) {
            p = lP.get(0);
        }
    } finally {
        em.close();
    }

    return p;
}