mysql - Grails:如何在加密列中搜索关键字并获取行

标签 mysql grails grails-domain-class grails-2.1

我正在开发一个grails应用程序,它可以在数据库中保存短信或电子邮件。这些消息以加密格式保存。

我正在尝试使用关键字搜索条件从表中获取行。由于这是加密的,我无法找到可以使用关键字搜索的查询。

我尝试将 transient 添加到域类并解密它。这是代码:

在域类中:

 static transients = ['decrypted']

 String getDecrypted() {
     return DESCodec.decryptText(message)
 }

 def m2 = Messages.findAll {-1 == it.getDecrypted().indexOf("xyz")};

这不起作用。

有人可以告诉我是否有办法通过使用加密列中的关键字搜索来获取行?

非常感谢任何帮助。

最佳答案

我建议你读一下这篇文章 Using transient property in findBy or listOrderBy methods .

基本上,当您手头上有一个对象时, transient 对象就变得可用。所以编写 hql/hibernate 查询并不会真正起作用。您可能会更幸运地做以下事情:

def m2 = Messages.findAll {-1 == DESCodec.decryptText(it.message).contains("xyz")}; 

上面的内容不确定,你需要尝试一下

这就是你正在尝试做的事情

def listing = Messages.executeQuery("from Messages" ,[:],[max:-1])
def found = listing.findAll {-1 == it.decrypted.contains("xyz")};

或手动:

  def listing = Messages.executeQuery("select new map(id as id, message as message) from Messages" ,[:],[max:-1])
    def found = listing.findAll {-1 == DESCodec.decryptText(it.message).contains("xyz")};

关于mysql - Grails:如何在加密列中搜索关键字并获取行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42085098/

相关文章:

mysql - 外部连接中的 IF/CASE

grails - Grails域类字段可为空的验证器,由其他字段决定

grails - 如何在一个域类中混合 'Reference' 和 'No Reference' 属于关系?

php - CakePHP 2.3.1 updateAll 查询不工作

php图像和文本上传不起作用

javascript - 使用多页的选择选项标记从 mysql 中排序数据

grails - Ra-在 Grails 应用程序中对更改后的用户进行身份验证

mongodb - 具有关联的Grails MongoDB更新对象

grails - 更新前更新后

json - 在 Grails 2.3.3 中接收复杂的 json 对象