Пересечение строкового поля со строковым массивом в режиме гибернации

#java #sql #hibernate

#java #sql #спящий режим

Вопрос:

У меня есть таблица, в которой находится строковое поле, разделенное запятой, и у меня есть строковый массив. Я хочу просмотреть этот разделенный запятыми строковый файл внутри строкового массива. Я не смог маркировать поле строки, чтобы я мог заглянуть внутрь строкового массива с помощью предложения «IN». Пример приведен ниже:

 String feild = "inbox, outbox, draft, sent";
String[] strArray = ["inbox, "outbox", "sent", "web", "software"];
  

Как я могу получить пересечение строки feild с массивом строк?

Комментарии:

1. Хотя строка, хранящаяся в таблице, разделена запятой, ее следует рассматривать как строку. Я не думаю, что вы можете использовать нас IN в таком сценарии.

2. Какому подходу я должен следовать в этом случае, потому что я не могу найти обходной путь.

3. На самом деле, я не хотел точно запрашивать его с помощью «IN» cluase. Я хочу запросить его с помощью аналогичного подхода.

4. Поскольку данные представляют собой строку, вы можете попробовать LIKE .

5. Я пытался, но он не может сопоставить каждое слово в строке поля со строковым массивом. Пересечение невозможно с помощью LIKE .

Ответ №1:

Вы можете использовать:

 Criterion c = null;
for(String s : strArray){
    if(c!=null){
        c = Restrictions.like("field","%" s "%");
    else {
        c = Restrictions.or(c,Restrictions.like("field","%" s "%"));
    }
}
  

это неэффективный способ, но это решение.

Комментарии:

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