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")};