Всем привет. Изучаю Hibernate, делаю запрос
Scanner scanner = new Scanner(System.in);
em = emf.createEntityManager();
System.out.println("Write min price");
int minPrice = scanner.nextInt();
System.out.println("Write max price");
int maxPrice = scanner.nextInt();
Query query = em.createQuery(
"select m from Menu m where m.price> :minPrice AND m.price<:maxPrice", Menu.class);
query.setParameter("maxPrice", maxPrice);
query.setParameter("minPrice", minPrice);
List<Menu> menus = query.getResultList();
for (Menu menu: menus){
System.out.println(menu);
}
В этой строчке программа вылетает. Не могу правильно сделать запрос с параметром - query.setParameter("maxPrice", maxPrice);
Если же без параметра в самом запросе прописать данные то все норм.
Query query = em.createQuery(
"select m from Menu m where m.price>5 AND m.price<15", Menu.class);
//query.setParameter("maxPrice", "maxPrice");
// query.setParameter("minPrice", "minPrice");
List<Menu> menus = query.getResultList();
for (Menu menu: menus){
System.out.println(menu);
}
Я так понимаю, что не правильно устанавливаю параметр или прописываю в самом запросе его. В чем проблема?
Вот ошибка:
Exception in thread "main" java.lang.IllegalArgumentException: Parameter value [15] did not match expected type [java.lang.Float (n/a)]
at org.hibernate.jpa.spi.BaseQueryImpl.validateBinding(BaseQueryImpl.java:874)
at org.hibernate.jpa.internal.QueryImpl.access$000(QueryImpl.java:80)
at org.hibernate.jpa.internal.QueryImpl$ParameterRegistrationImpl.bindValue(QueryImpl.java:248)
at org.hibernate.jpa.spi.BaseQueryImpl.setParameter(BaseQueryImpl.java:620)
at org.hibernate.jpa.spi.AbstractQueryImpl.setParameter(AbstractQueryImpl.java:180)
at org.hibernate.jpa.spi.AbstractQueryImpl.setParameter(AbstractQueryImpl.java:49)
at HibernateHomework1.App.selectDishesByPrice(App.java:77)
at HibernateHomework1.App.main(App.java:31)
Решил проблему. Может когда-то кому-то поможет или поможет найти ошибку.
В коде было int minPrice = scanner.nextInt();
а в базе данных тип поля был float
Глупая ошибка
Поменять последовательность строк, так как они идут в Запросе:
[... "select m from Menu m where m.price> :minPrice AND m.price<:maxPrice",
Menu.class); query.setParameter("minPrice", minPrice);
query.setParameter("maxPrice", maxPrice);
]
Виртуальный выделенный сервер (VDS) становится отличным выбором
Собрал игру нa LibGDX в Eclipse, запускаю и каждые 10± секунд происходит дроп фреймрейта до 5-10 на пару секунд и освобождается 10Мб+ оперативной памятиДумал...
Когда можно инициализировать final переменную? Может ли final переменная быть аргументом метода? Есть ли у final переменной значение по умолчанию?