Grails: как найти ключевое слово в зашифрованном столбце и получить строки

Я работаю над приложением Grails, где оно может сохранять SMS или электронную почту в базе данных. Эти сообщения сохраняются в зашифрованном формате.

Я пытаюсь получить строки из таблицы, используя критерии поиска по ключевым словам. Поскольку это зашифровано, я не могу найти запрос, который можно искать по ключевому слову.

Я попытался добавить transients в доменный класс и расшифровать его. Вот код:

в доменном классе:

 static transients = ['decrypted']

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

а также

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

который не работал.

Может кто-нибудь сказать мне, если есть способ получить строки с помощью поиска по ключевому слову в зашифрованном столбце?

Любая помощь действительно ценится.

1 ответ

Могу ли я предложить вам прочитать это Использование переходного свойства в методах findBy или listOrderBy.

В основном, временный объект становится доступным, когда у вас есть объект, который нужно передать. Так что написание 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")};
Другие вопросы по тегам