如何使用Hibernate将`null`值插入数据库?

时间:2015-02-12 08:36:55

标签: java hibernate servlets jpa null

请查看以下代码。

 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值?

1 个答案:

答案 0 :(得分:2)

这不是一个Hiberate问题。

见这里:

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

您只需检查一个空字符串并采取相应措施:

agent.setName(textName.equals(“”)?null:textName);

以上是一个有点简单的解决方案:如果用户进入空间怎么办?您可以使用Apache Commons StringUtils的方法进行更强大的检查:

e.g。

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

agent.setName(StringUtils.isBlank(textName)?null:textName);