返回第一次出现的查询结果spring hql

时间:2018-02-13 13:42:27

标签: java spring hql

我有一个返回json结果的端点。看来数据库中的某些行是重复的。我想只检索第一个匹配的结果,而忽略其余的结果。这是我在DAO中的HQL

@SuppressWarnings("unchecked")
    public List <Data> getDetails(String tin) {
        return  sessionFactory.getCurrentSession().createQuery("from Data where cal_no = :cal_no")
                .setParameter("cal_no",  tin).list();
    }

这是hql的结果格式

[{"id":15274,"cal_NO":"37"}{"id":15275,"cal_NO":"37"}]

您可以看到cal_NO重复两次,因为dbd中存在37次cal_no两次。我的挑战只是选择第一次出现而忽略其余部分。

1 个答案:

答案 0 :(得分:0)

您可以创建一个public static class StringExtensions { public static string MaskField(this string str, string field, string mask = "***") { var separators = ",;"; var sb = new StringBuilder(); foreach (var keyValue in Regex.Split(str, $"(?<=[{separators}])")) { var temp = keyValue; var index = keyValue.IndexOf("="); if (index > 0) { var key = keyValue.Substring(0, index); if (string.Compare(key.Trim(), field.Trim(), true) == 0) { var end = separators.Contains(keyValue.Last()) ? keyValue.Last().ToString() : ""; temp = key + "=" + mask + end; } } sb.Append(temp); } return sb.ToString(); } } 对象并使用Criteria来获取一个项目或 试试这段代码:

setMaxResults(1)