空字符串字段作为空字段

Posted

技术标签:

【中文标题】空字符串字段作为空字段【英文标题】:Empty string field as null field 【发布时间】:2018-04-23 14:37:32 【问题描述】:

默认情况下,Spring 将数据库中的空字符串字段作为空字符串持久化。有没有办法使用 Spring Boot 将来自任何实体的所有空字符串字段保留为空字段?

【问题讨论】:

使用 Spring Boot?什么意思? 抱歉,我的意思是使用 Spring Data 和/或 Hibernate Annotations。 为什么字段设置为空字符串?将它们设置为空,它们将在数据库中保存为空。 【参考方案1】:

也许你可以尝试使用转换器:

import javax.persistence.AttributeConverter;
import javax.persistence.Converter;
import org.apache.commons.lang.StringUtils;

@Converter(autoApply = true)
public class EmptyStringToNullConverter implements AttributeConverter<String, String> 

    @Override
    public String convertToDatabaseColumn(String string) 
        // Use defaultIfEmpty to preserve Strings consisting only of whitespaces
        return StringUtils.defaultIfBlank(string, null);
    

    @Override
    public String convertToEntityAttribute(String dbData) 
        //If you want to keep it null otherwise transform to empty String
        return dbData;
    

【讨论】:

不错!解决了我的问题。谢谢! 不错的解决方案。真的很有帮助。我正要开始搜索压倒一切的杰克逊。

以上是关于空字符串字段作为空字段的主要内容,如果未能解决你的问题,请参考以下文章

mysql非空字段不允许插入空字符串怎么处理?

kibana查询搜索引擎字段为空字符串

kettle怎么过滤掉某个字段空字符串数据

SrpingMVC/SpringBoot中restful接口序列化json的时候使用Jackson将空字段,空字符串不传递给前端

如何使用scala在Apache spark中用空字符串(“”)替换空值[重复]

MySQL中如何排除null和空字符串的条件