2015-02-12 3 views
0

Пожалуйста, взгляните на приведенный ниже код.Как вставить значения «null» в базу данных с помощью Hibernate?

String textName=request.getParameter("textName"); 
String textadr1=request.getParameter("textadr1"); 
String textadr2=request.getParameter("textadr2"); 
String textcntry=request.getParameter("textcntry"); 
String textregNo=request.getParameter("textregNo"); 

    AgentContact agentContact=new AgentContact(); 
    AgentContact agentContact2=new AgentContact(); 
    Agent agent=new Agent(); 

    agent.setName(textName); 
    agent.setRegistrationNumber(textregNo); 
    agent.setDateOfDealStart(textDateDealing); 
    agent.setRegistrationDate(textregDate); 

    session.save(agent); 
    session.save(agentContact); 
    session.save(agentContact2);   
    session.getTransaction().commit(); 

В приведенном выше коде, мы получаем значения из формы, поэтому request.getParameter() используется. Однако пользователь может или не может заполнять некоторые поля, такие как имя, поэтому txtName будет пустым.

Однако, когда этот код выполняется, я заметил, что Hibernate добавил «пустую» строку к этим не указанным строкам, вместо ввода null. Как я могу установить код, чтобы он входил в значения null, когда текст фактически пуст?

+0

имеет ли ваше поле данных значение по умолчанию? он обнуляется? – djb

+0

@djb: Он может быть нулевым, да. Нет значений по умолчанию, что означает, что если вы ничего не вводили, это будет «NULL» –

ответ

2

Это не проблема с изгибом.

Смотрите здесь:

Are empty fields in form of JSP null or ""?

Вам просто нужно проверить на пустую строку и действовать соответствующим образом:

agent.setName (textName.equals ("") нуль?: TextName);

Вышеупомянутое несколько упрощенное решение: что делать, если пользователь входит в пространство? Вы можете использовать методы Apache Commons StringUtils для более надежной проверки:

например.

http://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/StringUtils.html#isBlank(java.lang.CharSequence)

agent.setName (StringUtils.isBlank (textName) нуль: textName);

+0

+1 или просто StringUtils.trimToNull: http://commons.apache.org/proper/commons-lang/apidocs/src-html. /org/apache/commons/lang3/StringUtils.html#line.433 – home

+0

ах да, это имеет смысл. параметры запроса будут отображаться как «", а не null. – djb

+0

Спасибо. Ценю вашу помощь. –

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