当我使用命名查询或本机查询来使用少于'<'来过滤数据时,我面临着一种奇怪的情况。或大于'>'标志。 例如,我有一个代码目录,我通过这些代码和第一个代码导航#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;
}
答案 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;
}