#jsf #primefaces
#jsf #primefaces
Вопрос:
я получил ошибку в своих кодах следующим образом :
javax.постоянство.Исключение PersistenceException: Исключение [EclipseLink-4002] (службы сохранения Eclipse — 2.5.0.v20130507-3faac2b): org.eclipse.persistence.исключения.Исключение DatabaseException Внутреннее исключение: java.sql.SQLSyntaxErrorException: Синтаксическая ошибка: обнаружена «:» в строке 1, столбец 42. Код ошибки: -1 Вызов: выберите userLevelId из ПОЛЬЗОВАТЕЛЕЙ, где id = :id Запрос: DataReadQuery (sql =»выберите userLevelId из ПОЛЬЗОВАТЕЛЕЙ, где id = :id «)
и мой код :
public String cek() { if (tmp.equals(tmp2)) {
y =1;
level = getItems().toString(); }
.....
.....
}
public List<Users> getItems() {
if (y.equals(1)) {
y=0;
tmp = tmp.trim();
return em.createNativeQuery("select userLevelId from USERS where id = :id")
.setParameter("id", tmp).getResultList(); }
}
так в чем же моя вина?
кто-нибудь может мне помочь?
thx b4
Комментарии:
1. Вам не хватает кавычек?
select userLevelId from USERS u where u.id = ':id'
Ответ №1:
Основная проблема
- Собственные запросы не используют синтаксис именованных параметров (
:id
). Используйте синтаксис подготовленного оператора с?
. Затем используйте.setParameter( indexOf?, value )
. Например...("select userLevelId from USERS where id = ?") ...setParameter(1, tmp)
Другие примечания
- Не выполняйте запрос в получателе, если получатель является частью привязки свойства. Например, если у вас есть
List<User> items
свойство bean, не выполняйте никакой бизнес-логики или, в вашем случае, запросов в getter. Средство получения может быть вызвано по нескольким причинам, помимо того, что вы ожидаете. Вместо этого вы можете инициализировать его в@PostConstruct
методе или в своем конструкторе. Если вам нужно обновить список, создайте метод прослушивателя, который обновит его, и напрямую вызовите этот метод - Обычной практикой является разделение бизнес-уровня и веб-уровня (управляемый компонент). Бизнес-уровень может быть EJB, в который вы вводите управляемый компонент
Комментарии:
1. кстати, извините, я хочу отладить свой проект в netbeans 8.0, почему, когда я отлаживаю, но система создает мой проект? что я должен сделать?
2. Вы спрашиваете, почему Netbeans создает ваш проект до того, как он запускает режим отладки?
3. нет, я уже создал свой проект, но когда я запускаю / отлаживаю, после этого netbeans снова создает мой проект, чтобы мой проект не отображался. извините, если мои слова привели вас в замешательство.. хе-хе