2016-11-25 5 views
2

У меня есть сценарий, в котором я должен передать null параметру SQL через java, но я получаю SQLGrammarException. Если я передаю некоторую ценность, он отлично работает. Пожалуйста, помогите, если я где-то не прав.Как передать значение null в параметр SQL в java?

Ниже мой код:

StringBuffer query; 
    query = new StringBuffer(
    "SELECT * "+ 
     "FROM table(package.func(travel_type => travel_search_type("+ 
      "travel_place_no => :travelPlaceNo"+ 
      ")))"); 
     Query query1 = em.createNativeQuery(query.toString()); 
    query1.setParameter("travelPlaceNo",null); 

    searchresults = query1.getResultList(); 

Исключение:

org.hibernate.exception.SQLGrammarException

Это то, что я делать через SQL Developer и она отлично работает:

SELECT * 
FROM table(package.func(travel_type => travel_search_type(
    travel_place_no => NULL))) ; 

Пожалуйста, руководство.

+2

есть, после: travelPlaceNo - это то, что ошибка вставки папок или нет? –

+0

Мне жаль, что это была копия пасты, в то время как отступы .. исправлено – sTg

+1

Вы посмотрели http://stackoverflow.com/questions/2123438/hibernate-how-to-set-null-query-parameter-value-with- hql? –

ответ

3

При вызове двух аргументов аргумента метода значение null не является допустимым. Вместо этого вы можете использовать подпись 3 аргументов setParameter(String name, Object val, Type type) с указанием типа данных, и она должна работать.

EDIT:

Хорошо, я вижу, есть еще одна проблема: даже если replacemente работал, что вы пытаетесь выполнить это a >= NULL. В этом случае я боюсь, что вам придется вручную обрабатывать создание StringBuffer. Возможно, просто принудийте всегда ложное условие без параметров, если его значение равно null, например `1! = 2 ', и в противном случае просто обрабатывайте его так же, как вы делаете на вашем примере sql (напишите mannually' NULL 'вместо параметра placeholder).

+0

Но что, если его номер ?. это будет работать? – sTg

+0

Что находится в базе данных? НОМЕР? Я бы просто попробовал Integer и дал ему –

+0

Я использую Query query1. Я не нашел эти подписи. – sTg

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

  • Нет связанных вопросов^_^