2015-02-27 2 views
0

Я получаю это исключение из выборки записи через базу данных на основе столбца портфеля
запросов:как написать код PHP interminal

String queryString= "select entity from " +Name + " entity WHERE entity."+Column+" = "+ searchId.toString(); 
Query query = _em.createQuery(queryString); 

ответ

1

Многие вещи здесь не так и много важной информации отсутствует (лица код?).

  1. className в вашем примере должно быть просто Portfolio вместо class com.hexgen.orm.Portfolio (при условии, Portfolio это имя лица, которое не должно быть таким же, как имя класса). Если вы используете someEntity.getClass().getName(), чтобы получить его, чтобы изменить someEntity.getClass().getSimpleName()
  2. searchColumn должно быть имя поля Portfolio класса, а не имя столбца в базе данных. Asssuming PORTFOLIO столбец сопоставляется с полем portfolio, он должен быть portfolio.

    String queryString = "select entity from " + simpleClassName + " entity WHERE entity." + searchColumn + " = :searchId"; Query query = _em.createQuery(queryString); query.setParameter("searchId", searchId.toString());

  3. Если вы не переключиться на использование параметров запроса, searchId.toString() должны быть заключены в одинарные кавычки.

Таким образом, действительный запрос должен выглядеть следующим образом

select entity from Portfolio entity WHERE entity.portfolio = 'HEXAGON20' 
1

У вас есть несколько проблем в вашем синтаксисе запросов и если вы посмотрите на сообщение это совершенно определенно: Вы строите свой запрос с

"select entity from " +className + " entity WHERE entity."+searchColumn+" = "+ searchId.toString(); 

Что дает

select entity from class com.hexgen.orm.Portfolio entity WHERE entity.PORTFOLIO = HEXAGON20 

1- class не должно быть. Кажется, что это исходит от переменной className.

2- HEXAGON20 является строковое значение, которое должно быть 'HEXAGON20'

+0

Можете ли вы отправить строку SQL, которая делает ошибку? также опубликуйте класс компонента entity. –

Смежные вопросы