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

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

最佳答案

这不是 Hiberate 问题。

看这里:

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

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

agent.setName(textName.equals("") ? null : 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) ? null : textName);

关于java - 如何使用 Hibernate 将 `null` 值插入数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28472765/

相关文章:

java - 多级继承 "is-a"关系?

java - 从另一个列表中选择值时从数据库加载列表

java - 当我尝试插入通知类型对象时,子实体也会尝试插入

java - com.google.common.cache.Cache 类未找到错误

java - WEB-INF/lib目录下的动态web项目: "java.lang.ClassNotFoundException" despite . jar文件

java - 从 build.gradle 文件中读取静态 Java 类

java - 用于查看算法花费多长时间的计时器表示我的二分搜索比线性搜索花费的时间长

java - 关闭sessionFactory将数据保存到HSQL

jsp 上的 javax.el.PropertyNotFoundException 错误

java - 在 JPA 实体本身之前保留/保存该实体的关系