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

Ну вот и как быть тут? (ну както знаете сложно просто для начинаешего, может кто подкинет мне хотябы идею этого нюанса)
...
Рейтинг: 0 / 0
31.03.2012, 11:26:19
    #37732659
grasoff.net
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ещё один очень сложный вопрос по поиску данных с hibernate
а как бы ты просто sql написал?
...
Рейтинг: 0 / 0
31.03.2012, 23:40:34
    #37733172
ccoder
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ещё один очень сложный вопрос по поиску данных с hibernate
grasoff.netа как бы ты просто sql написал?
Я даже незнаю как искать если есть только часть строки.
Через like, только как?
...
Рейтинг: 0 / 0
01.04.2012, 00:14:40
    #37733192
ArmenA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ещё один очень сложный вопрос по поиску данных с hibernate
just a moment сейчас подкину пример, но Вам надо учить SQL и JPA API.
...
Рейтинг: 0 / 0
01.04.2012, 00:17:19
    #37733194
ccoder
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ещё один очень сложный вопрос по поиску данных с hibernate
уже учил не один раз и не в одном месте.
Мнеб с hibernate понять как там с HQL
...
Рейтинг: 0 / 0
01.04.2012, 00:18:16
    #37733197
ArmenA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ещё один очень сложный вопрос по поиску данных с hibernate
Примерно такой метод Вам нужно написать, только вот под 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
01.04.2012, 00:21:03
    #37733202
ArmenA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ещё один очень сложный вопрос по поиску данных с hibernate
HQL это JPA API, там все легко и просто, SQL код работает с обьектами, с entity beans.

Наверно у тебя eclipse, удали его инсталируй NetBEans 7.1 , в не миллион примеров а так же можно генерировать entitie beans из database.
...
Рейтинг: 0 / 0
01.04.2012, 00:22:20
    #37733203
ccoder
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ещё один очень сложный вопрос по поиску данных с hibernate
хм... выглядит интересно.
Шас попробую разобраться....
...
Рейтинг: 0 / 0
01.04.2012, 00:37:01
    #37733216
ccoder
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ещё один очень сложный вопрос по поиску данных с hibernate
Хочу спросить про следующий момент.
Если я хочу просто найти подстроку в строке, но получается я должен сделать четыре LIKE, т.е. "substring", "%substring", "substring%", "%substring%".
Вопрос - а одним нельзя найти както?
И может в hibernate есть какието "примочки"?
Ну сами понимаете неособо хорошо всё это
...
Рейтинг: 0 / 0
01.04.2012, 04:41:01
    #37733299
ccoder
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ещё один очень сложный вопрос по поиску данных с hibernate
Наткнулся тут 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
01.04.2012, 05:18:59
    #37733301
ccoder
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ещё один очень сложный вопрос по поиску данных с hibernate
А с Hibernate Search что можно сделать? Может кто знает?
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Ещё один очень сложный вопрос по поиску данных с hibernate / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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