我有以下问题:
我们正在使用Hibernate和Struts编写一个Web应用程序。提交后,我想检查数据库更新是否已执行。所以我拉出来对象的数据库,并把它比作在表单中的数据(让我们假设,我有一个Person
与像某些属性的对象Name
,Address
等)。
现在,如果Address
Web表单上的字段为空,则form属性将给我一个""
(空字符串)。如果我使用Address
从数据库对象获得的属性并将其与form属性进行比较,则比较将返回,FALSE
因为我比较了""
(Emptyley)NULL
不相同的(Empty String)。
我尝试了以下方法:
if (StringUtils.equals(formObj.getAddress(), dbObj.getAddress())) {
dbObj.getAddress(formObj.getAddress());
dbObj.update();
}
if (ObjectUtils.equals(formObj.getAddress(), dbObj.getAddress())) {
dbObj.getAddress(formObj.getAddress());
dbObj.update();
}
我的问题是:是否有一种方法可以将它们带入字符串值并进行比较,从而"" == NULL
返回TRUE
?
我将把解决方案留在这里:
为此,我在自己的StringUtils类中添加了一个方法(我们称其StringTools
为避免与Apache的冲突StringUtils
):
public static boolean notEqualHibernateProperty(String s1, String s2) {
return !ObjectUtils.equals(StringUtils.defaultString(s1), StringUtils.defaultString(s2));
}
StringUtils.defaultString(s)
如果参数值为,则返回一个空的String NULL
。然后,我只是将更新条件更改为:
if (StringTools.notEqualHibernateProperty(formObj.getAddress(), dbObj.getAddress())) {
dbObj.getAddress(formObj.getAddress());
dbObj.update();
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句