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

时间:2017-02-07 08:34:24

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

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

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

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

域类中的

 static transients = ['decrypted']

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

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

哪个不起作用。

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

任何帮助都非常感激。

1 个答案:

答案 0 :(得分:0)

我建议您阅读Using transient property in findBy or listOrderBy methods

当你有一个物体要处理时,基本上可以使用瞬态物体。因此编写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")};