如何使用 Hibernate 将 `null` 值插入数据库?
How to insert `null` values to database using 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 向这些未指定的字符串添加了 "empty" 字符串,而不是输入 null
。如何设置代码,使其在文本实际为空时输入 null
值?
这不是 Hiberate 问题。
看这里:
Are empty fields in form of JSP null or ""?
您只需检查一个空字符串并采取相应措施:
agent.setName(textName.equals("") ? null : textName);
以上是一个有些简单的解决方案:如果用户输入 space 怎么办?您可以使用 Apache Commons StringUtils 的方法进行更可靠的检查:
例如
agent.setName(StringUtils.isBlank(textName) ? null : textName);
请看下面的代码。
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 向这些未指定的字符串添加了 "empty" 字符串,而不是输入 null
。如何设置代码,使其在文本实际为空时输入 null
值?
这不是 Hiberate 问题。
看这里:
Are empty fields in form of JSP null or ""?
您只需检查一个空字符串并采取相应措施:
agent.setName(textName.equals("") ? null : textName);
以上是一个有些简单的解决方案:如果用户输入 space 怎么办?您可以使用 Apache Commons StringUtils 的方法进行更可靠的检查:
例如
agent.setName(StringUtils.isBlank(textName) ? null : textName);