【问题标题】:How to filterd mail domain from the list of emails using hibernate query如何使用休眠查询从电子邮件列表中过滤邮件域
【发布时间】:2013-10-06 00:58:38
【问题描述】:

我有一个电子邮件数据列表,例如abc@gmail.comabc@yahoo.comasd@gmail.comasd@yahoo.comsdf@gmail.com

现在我想将电子邮件域列表过滤为“gmail”,所有数据都应该被过滤并只显示 gmail id 的列表而不是其他电子邮件 id。

我的代码是:

List<String> EmaiList = (List<String>) session.createQuery("select email from UserDto where email like :lk and type" +
                        (isMailStuff ? " in (:mailTypes)" : " not in (:mailTypes)"))
                        .setString("lk", partEmail + "%")
                        .setParameterList("mailTypes", UserType.mailTypes)
                        .list();

在这段代码中,我将 isMailStuff 设置为“真”。现在我可以过滤 gmail 列表,但在某些地方我可以看到其他邮件 ID,例如 yahoo 邮件 ID。

您能否让我知道此查询中需要任何更改。

问候, 拉维

【问题讨论】:

    标签: java mysql sql oracle hibernate


    【解决方案1】:

    如果你把setString改成这个

    .setString("lk", "%" + partEmail + "%")
    

    如果partEmail 的值为@gmail,它将返回包含@gmail 模式的电子邮件列表。

    【讨论】:

    • 如果我将partEmail 的输入输入为'a',它应该显示包含字母'a' 的邮件ID (gmail) 列表。在这种情况下,上面的 setString 不起作用。您能对此有其他想法吗?
    • above setString is not working?它正在返回所有包含a 的电子邮件.. 对吗?
    • 是的 Debojit,它正在返回所有带有“a”的电子邮件列表
    • 这意味着它按预期工作。您正在定义一个模式并且它正在返回包含该模式的电子邮件。这就是你想要的……对吧?
    • 没有 Debojit,我的要求是如果我输入“a”,所有的电子邮件(只有 gmail)都应该显示。但如果其他电子邮件也包含“a”,例如 yahoo 电子邮件 ID,则不应显示。我无法通过 gmail.com 或 yahoo.com 之类的域进行搜索,只能通过 abc、asd 等域之前的名称进行搜索。
    【解决方案2】:

    http://dev.mysql.com/doc/refman/5.1/en/string-functions.html#function_substring-index

    添加

    where substring_index(email_column, '@', -1)='gmail.com'
    

    【讨论】:

    • :- 我对休眠状态很差......我能知道在哪里添加这段代码吗?
    猜你喜欢
    • 2021-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-20
    相关资源
    最近更新 更多