powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Ещё один очень сложный вопрос по поиску данных с hibernate
11 сообщений из 11, страница 1 из 1
Ещё один очень сложный вопрос по поиску данных с hibernate
    #37732558
ccoder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте.
Имею достаточно сложную задачу для новичка.
Есть вот такие таблицы
http://img594.imageshack.us/img594/4082/96519071.png
Они например заполненны какимито данным.
И я например делаю форму поиска где могу указать - получить все визиты по какомуто дню или все визиты у которых имя специалиста начинаеться с какогото слова.

Ну вот и как быть тут? (ну както знаете сложно просто для начинаешего, может кто подкинет мне хотябы идею этого нюанса)
...
Рейтинг: 0 / 0
Ещё один очень сложный вопрос по поиску данных с hibernate
    #37732659
Фотография grasoff.net
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а как бы ты просто sql написал?
...
Рейтинг: 0 / 0
Ещё один очень сложный вопрос по поиску данных с hibernate
    #37733172
ccoder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
grasoff.netа как бы ты просто sql написал?
Я даже незнаю как искать если есть только часть строки.
Через like, только как?
...
Рейтинг: 0 / 0
Ещё один очень сложный вопрос по поиску данных с hibernate
    #37733192
ArmenA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
just a moment сейчас подкину пример, но Вам надо учить SQL и JPA API.
...
Рейтинг: 0 / 0
Ещё один очень сложный вопрос по поиску данных с hibernate
    #37733194
ccoder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
уже учил не один раз и не в одном месте.
Мнеб с hibernate понять как там с HQL
...
Рейтинг: 0 / 0
Ещё один очень сложный вопрос по поиску данных с hibernate
    #37733197
ArmenA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Примерно такой метод Вам нужно написать, только вот под Hibernate можетшь использовать SessionFactory

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
 public List<RegisterObjectDTO> getObjectList(
          ObjectFilterDTO filter,
          Integer start,
          Integer count) {

    List<RegisterObjectDTO> result = new ArrayList<RegisterObjectDTO>();
    try {
      String queryStr = "SELECT o FROM PrsObjEntity o WHERE " +
              "o.tin IS NOT NULL ";

      if (filter.getOin() != null) {
        queryStr += " AND o.oin = " + filter.getOin();
      }

      if (filter.getTin() != null) {
        queryStr += " AND o.tin LIKE '" + filter.getTin() + "%'";
      }

      if (filter.getName() != null) {
        queryStr += " AND o.nameObj LIKE '%" + filter.getName() + "%'";
      }

      if (filter.getStatus() != null) {
        queryStr += " AND o.rfStatusId = " + filter.getStatus();
      }

      if (filter.getDistCode() != null) {
        queryStr += " AND o.distCode LIKE '" + filter.getDistCode() + "'";
      }

      if (filter.getRegLowerBound() != null) {
        queryStr += " AND o.entDt >= TO_DATE(:startDate,'YYYY-MM-DD')";
      }
      if (filter.getRegUpperBound() != null) {
        queryStr += " AND o.entDt <= TO_DATE(:endDate,'YYYY-MM-DD')";
      }

      if (filter.getTypeObjId() != null) {
        queryStr += " AND o.rfTypeobjId = " + filter.getTypeObjId();
      }

      if (filter.getAddress() != null) {
        String lowerAddress = filter.getAddress().toLowerCase();
        String[] lowerAddressArray = lowerAddress.split("\\s+");
        if (lowerAddressArray != null && lowerAddressArray.length > 0) {
          for (String item : lowerAddressArray) {
            queryStr += " AND (lower(o.city) LIKE '" + item + "%'" +
                    " OR lower(o.street) LIKE '" + item + "%'" +
                    " OR lower(o.houseNo) LIKE '" + item + "%'" +
                    " OR lower(o.aptNo) LIKE '" + item + "%'" +
                    " OR o.tel LIKE '%" + item + "%')";
          }
        }
      }

      Query query = em.createQuery(queryStr);
      query.setHint("openjpa.hint.OracleSelectHint", "/*+ first_rows(1) */");

      if (start != null && start >= 0) {
        query.setFirstResult(start);
      }
      if (count != null && count > 0) {
        query.setMaxResults(count);
      }

      if (filter.getRegLowerBound() != null) {
        query.setParameter("startDate", ConversionsUtils.formatDateForDB(filter.getRegLowerBound()));
      }
      if (filter.getRegUpperBound() != null) {
        query.setParameter("endDate", ConversionsUtils.formatDateForDB(filter.getRegUpperBound()));
      }

      List<PrsObjEntity> list = query.getResultList();

      for (PrsObjEntity item : list) {
        result.add(populate(item));
      }
    } catch (Exception ex) {
      ex.printStackTrace();
      log.error("Error while getting object list", ex);
    }

    return result;
  }





Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
 private SessionFactory sessionFactory;  
    
//    @PersistenceContext(name="bankdemoPU")
//    private EntityManager em;
// 
     
    public List<Users> getUserList() {        
        List<Users> list = null;     
        try {
            String query_string = "from Users o";
           list=sessionFactory.getCurrentSession().createQuery(query_string).list();   
//           sessionFactory.getCurrentSession().persist(list);
             //= query.getResultList();
//            messages = new Vector(list.size());
//            for (int i = 0; i < list.size(); i++) {
//                Users[] result = list.get(i);
//                Users message = new Users();
//                message.setId(result[0]);
//                message.setUsername((String) result[3]);             
//                messages.add(message);
//            }

        } catch (Exception ex) {
           ex.printStackTrace();
        } 
        return list;
...
Рейтинг: 0 / 0
Ещё один очень сложный вопрос по поиску данных с hibernate
    #37733202
ArmenA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HQL это JPA API, там все легко и просто, SQL код работает с обьектами, с entity beans.

Наверно у тебя eclipse, удали его инсталируй NetBEans 7.1 , в не миллион примеров а так же можно генерировать entitie beans из database.
...
Рейтинг: 0 / 0
Ещё один очень сложный вопрос по поиску данных с hibernate
    #37733203
ccoder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хм... выглядит интересно.
Шас попробую разобраться....
...
Рейтинг: 0 / 0
Ещё один очень сложный вопрос по поиску данных с hibernate
    #37733216
ccoder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хочу спросить про следующий момент.
Если я хочу просто найти подстроку в строке, но получается я должен сделать четыре LIKE, т.е. "substring", "%substring", "substring%", "%substring%".
Вопрос - а одним нельзя найти както?
И может в hibernate есть какието "примочки"?
Ну сами понимаете неособо хорошо всё это
...
Рейтинг: 0 / 0
Ещё один очень сложный вопрос по поиску данных с hibernate
    #37733299
ccoder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наткнулся тут http://stackoverflow.com/questions/120588/case-insensitive-search-using-hibernate
на такой код
Код: java
1.
2.
3.
4.
5.
6.
7.
public List findLike(Object entity, MatchMode matchMode) {
    Example example = Example.create(entity);
    example.enableLike(matchMode);
    example.ignoreCase();
    return getSession().createCriteria(entity.getClass()).add(
            example).list();
}


Но как быть с датой както непонятно...
...
Рейтинг: 0 / 0
Ещё один очень сложный вопрос по поиску данных с hibernate
    #37733301
ccoder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А с Hibernate Search что можно сделать? Может кто знает?
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Ещё один очень сложный вопрос по поиску данных с hibernate
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]