Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / как лучше реализовать метод GetIDbyName() / 21 сообщений из 21, страница 1 из 1
02.02.2011, 10:17:16
    #37092327
Baur
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как лучше реализовать метод GetIDbyName()
Всем привет

NetBeans IDE 6.9
JavaEE6
Java Development Kit (JDK) version 6
GlassFish server - Open Source Edition 3.0.1


SessionBean

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
@Stateless
 public   class  RefdevicebrandManager {
    @PersistenceContext(unitName = "ITSPU")
     private  EntityManager em;
     public  List GetBrandIDbyName(String brandName)
    {
         return  em.createNamedQuery("Trefdevicebrand.findByBrandname").setParameter("brandname", brandName).getResultList();
    }

}

servlet

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
 import  entity.Trefdevicebrand;
...
    @EJB
     private  RefdevicebrandManager refdevicebrandManager;
...
                String brandname = request.getParameter("brandname");
                 int  brandid;
                 if  (!refdevicebrandManager.GetBrandIDbyName(brandname).isEmpty()){
                    Trefdevicebrand v = (Trefdevicebrand) refdevicebrandManager.GetBrandIDbyName(brandname).get( 0 );
                    brandid = v.getBrandid();
                }  else  {brandid =  0 ;}
                req.setAttribute("brandid", brandid);
...

как переделать код, чтобы
Код: plaintext
 public  List GetBrandIDbyName(String brandName)
возвращал не List а сразу int brandid ?
...
Рейтинг: 0 / 0
02.02.2011, 10:20:24
    #37092344
Baur
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как лучше реализовать метод GetIDbyName()
хотя Trefdevicebrand.findByBrandname возвращает уникальную строку, но кроме List не смог придумать )))
...
Рейтинг: 0 / 0
02.02.2011, 10:37:24
    #37092394
Ruslan.Isbarov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как лучше реализовать метод GetIDbyName()
...
Рейтинг: 0 / 0
02.02.2011, 11:22:19
    #37092534
Baur
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как лучше реализовать метод GetIDbyName()
Ruslan.Isbarov getSingleResult() ?
спасибо!
...
Рейтинг: 0 / 0
02.02.2011, 12:28:46
    #37092782
Baur
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как лучше реализовать метод GetIDbyName()
вариант

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
 package  EJB;
 import  entity.Trefatmbrand;
...
@Stateless
 public   class  RefdevicebrandManager {
    @PersistenceContext(unitName = "ITSPU")
     private  EntityManager em;
     public   int  GetBrandIDbyName(String brandName)
    {
         int  brandid;
        List brandList = em.createNamedQuery("Trefdevicebrand.findByBrandname").setParameter("brandname", brandName).getResultList();
         if  (!brandList.isEmpty()){
                Trefdevicebrand b = (Trefdevicebrand) brandList.get( 0 );
                brandid = b.getBrandid();
        }  else  {brandid = - 1 ;}
         return  brandid;
    }
}
...

но меня смущает Trefdevicebrand b = (Trefdevicebrand) brandList.get(0); и List
использовать getSingleResult() так и не смог
...
Рейтинг: 0 / 0
02.02.2011, 12:33:51
    #37092799
Ruslan.Isbarov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как лучше реализовать метод GetIDbyName()
Baur , почему не смогли? Поясните, плз, дабы не было недопонимания, что именно Вас смущает в приведенных Вами строках?

Код: plaintext
1.
Trefdevicebrand b = (Trefdevicebrand) em.createNamedQuery("Trefdevicebrand.findByBrandname").setParameter("brandname", brandName).getSingleResult();

Как то так...
...
Рейтинг: 0 / 0
02.02.2011, 12:45:21
    #37092853
Baur
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как лучше реализовать метод GetIDbyName()
Ruslan.Isbarov Baur , Вас смущает в приведенных Вами строках?
зачем использовать List кода я точно знаю, что ResultSet возвращает уникальную строку

Ruslan.Isbarov Baur ,
почему не смогли?


потому что Trefdevicebrand.findByBrandname возвращает те только brandId возвращается и brandName

как мне получить значение brandId или brandName
или можно b.brandId или b.brandName
...
Рейтинг: 0 / 0
02.02.2011, 13:00:05
    #37092898
Ruslan.Isbarov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как лучше реализовать метод GetIDbyName()
Baur , Вы используете технологию Java Persistence API и работаете не с реляционной моделью, а с объектной.

getSingleResult() возвращает Вам ссылку на объект класса Trefdevicebrand . Чего использовать в качестве возвращаемого значения метода GetBrandIDbyName() - ИД b.brandId или имя b.brandName (или вообще весь объект класса - b ) - решать уже Вам.

getResultList() используется в том случае, если результатом выборки будет несколько строк (в данном случае объектов).

Но если же Вы хотите получить только значение конкретного столбца - тогда нужно смотреть в сторону Native Queries - " SELECT NAME FROM ... WHERE brandname = что_то_там ". Не думаю, что это Вам надо. Поэтому, берите всю информацию из извлеченного объекта.
...
Рейтинг: 0 / 0
02.02.2011, 13:04:58
    #37092910
and)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как лучше реализовать метод GetIDbyName()
но учтите что, если объект не будет найден getSingleResult выбрасывает исключение
...
Рейтинг: 0 / 0
02.02.2011, 13:06:39
    #37092920
Ruslan.Isbarov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как лучше реализовать метод GetIDbyName()
and) , да-да... Также стоит учесть, что если результат выборки будет > 1, также будет выброшено исключение. Кто знает, может brandName - не уникален.
...
Рейтинг: 0 / 0
02.02.2011, 13:56:05
    #37093055
Baur
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как лучше реализовать метод GetIDbyName()
спасибо, код переписал

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
     public   int  GetBrandIDbyName(String brandName)
    {
         int  brandid;
         try  {
        Trefdevicebrand b = (Trefdevicebrand) em.createNamedQuery("Trefdevicebrand.findByBrandname").setParameter("brandname", brandName).getSingleResult();
        brandid = b.getBrandid();
        }  catch  (Exception e)
        {
            brandid = - 1 ;
        };
         return  brandid;
    }

Ruslan.Isbarov and) , да-да... Также стоит учесть, что если результат выборки будет > 1, также будет выброшено исключение. Кто знает, может brandName - не уникален.

а как отловить ошибку и записать в сервер лог GlassFish или хотя бы в output IDE?
действительно, я бы не хотел чтобы ошибка тихо-молча прошел мимо
...
Рейтинг: 0 / 0
02.02.2011, 14:15:35
    #37093110
grasoff.net
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как лучше реализовать метод GetIDbyName()
не надо использовать локальный
Код: plaintext
 int  brandid;
это мерзко
...
Рейтинг: 0 / 0
02.02.2011, 14:28:03
    #37093140
Baur
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как лучше реализовать метод GetIDbyName()
grasoff.netне надо использовать локальный
Код: plaintext
 int  brandid;
это мерзко

да, вижу )))

сразу писал
Код: plaintext
1.
2.
3.
4.
5.
6.
         try  {
        Trefatmbrand b = (Trefatmbrand) em.createNamedQuery("Trefatmbrand.findByBrandname").setParameter("brandname", brandName).getSingleResult();
         return  b.getBrandid();
        }  catch  (Exception e)
        {
             return  - 1 ;
        };

но компилятор ругался на empty statement
думал переписать когда определюсь с кодом catch e.getMessage()

пока никак не могу записать e.getMessage() в GlassFish log
...
Рейтинг: 0 / 0
02.02.2011, 14:34:40
    #37093166
Baur
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как лучше реализовать метод GetIDbyName()
grasoff.netне надо использовать локальный
Код: plaintext
 int  brandid;
это мерзко

почему компилятор не принимает
Код: plaintext
1.
2.
3.
4.
5.
6.
 try  {
        Trefatmbrand b = (Trefatmbrand) em.createNamedQuery("Trefatmbrand.findByBrandname").setParameter("brandname", brandName).getSingleResult();
         return  b.getBrandid();
        }  catch  (Exception e)
        {
             return  - 1 ;
        };

?
...
Рейтинг: 0 / 0
02.02.2011, 14:50:38
    #37093211
Ruslan.Isbarov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как лучше реализовать метод GetIDbyName()
Что именно говорит Вам компилятор? Ошибку в студию...
...
Рейтинг: 0 / 0
02.02.2011, 15:02:04
    #37093247
Baur
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как лучше реализовать метод GetIDbyName()
Ruslan.IsbarovЧто именно говорит Вам компилятор? Ошибку в студию...

error.jpg ну как бы можно supress сделать (игнорировать) но все таки ...

Ruslan.Isbarov, как можно логировать exception в GlassFish server log?

Код: plaintext
1.
2.
3.
}  catch  (Exception e)
        {   //e.getMessage()
             return  - 1 ;
        };
...
Рейтинг: 0 / 0
02.02.2011, 15:10:09
    #37093276
Ruslan.Isbarov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как лучше реализовать метод GetIDbyName()
Уберите нафиг точку с запятой после try-catch :

Код: plaintext
1.
2.
3.
4.
5.
 try  {
     return  ...
}  catch  (...) {
     return  ...
};

Это недостижимый код.
...
Рейтинг: 0 / 0
02.02.2011, 15:12:58
    #37093286
Ruslan.Isbarov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как лучше реализовать метод GetIDbyName()
BaurRuslan.Isbarov, как можно логировать exception в GlassFish server log?
Либо использовать логгер, либо System.out.println("Error msg: " + e.getMessage()). И смотрите лог домена GLASSFISH_HOME/domains/domainXXX/logs/server.log.
...
Рейтинг: 0 / 0
02.02.2011, 15:31:48
    #37093342
Baur
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как лучше реализовать метод GetIDbyName()
Ruslan.IsbarovУберите нафиг точку с запятой после try-catch :

Код: plaintext
1.
2.
3.
4.
5.
 try  {
     return  ...
}  catch  (...) {
     return  ...
};

Это недостижимый код.

Ruslan.IsbarovЛибо использовать логгер, либо System.out.println("Error msg: " + e.getMessage()). И смотрите лог домена GLASSFISH_HOME/domains/domainXXX/logs/server.log.




:D

Спасибо!!!
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
05.03.2012, 22:25:27
    #37692487
devalentino
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как лучше реализовать метод GetIDbyName()
Ruslan.IsbarovBaurRuslan.Isbarov, как можно логировать exception в GlassFish server log?
Либо использовать логгер, либо System.out.println("Error msg: " + e.getMessage()). И смотрите лог домена GLASSFISH_HOME/domains/domainXXX/logs/server.log.

Подскажите пожалуйста, как настроить Glassfish так чтобы System.out.println() работал в любом "классе". У меня только в ManagedBean-ах и PhaseListener-ах out в system.log перенаправляется
...
Рейтинг: 0 / 0
06.03.2012, 12:13:31
    #37693133
Leonidv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как лучше реализовать метод GetIDbyName()
devalentinoRuslan.Isbarovпропущено...

Либо использовать логгер, либо System.out.println("Error msg: " + e.getMessage()). И смотрите лог домена GLASSFISH_HOME/domains/domainXXX/logs/server.log.

Подскажите пожалуйста, как настроить Glassfish так чтобы System.out.println() работал в любом "классе". У меня только в ManagedBean-ах и PhaseListener-ах out в system.log перенаправляется
Использовать slf4j+logback и на всю жизнь забыть про system.out.println в промышленных приложениях.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / как лучше реализовать метод GetIDbyName() / 21 сообщений из 21, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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