gpt4 book ai didi

java - 如何配置 Spring Boot JPA Java 实体以自动修剪每个 CHAR 列中的字符串?

转载 作者:行者123 更新时间:2023-12-03 21:14:30 25 4
gpt4 key购买 nike

我很震惊,这个答案并不容易找到,但是 - 如何将我的 Spring-Boot 应用程序的 JPA 实体配置为全部自动修剪每个字符串属性?

我正在使用旧式 DB2 数据库,其中每个 CHAR 列的每个值都由我无法控制的各种应用程序填充尾随空格。大约有 50 个带有许多 CHAR(N) 列的互连表,我必须对数据进行无数次转换和比较,而这些转换/比较永远不会与尾随空格一起使用。所以我发现自己在我的代码中调用了大约 10 亿次 trim() 。

覆盖实体 POJO 类的 getter/setter 方法感觉很恶心,因为有数百个,而且因为我刚刚通过使用 Lombok 摆脱了它们。 Pleeeeaaase 告诉我有一种方法可以配置 Spring/Hibernate 以自动修剪每个 CHAR(N) String 列的尾随空格...

import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;

import javax.persistence.*;

@Data
@NoArgsConstructor
@Entity
@Table(name="MEASUREMENT_TYPE")
public class MeasurementType {
@Id
@Column(name="MSR_TYP_CD")
private short measurementTypeCode;

@Column(name="DES_TXT", columnDefinition = "CHAR", length = 5)
private String description;
}

最佳答案

一种解决方案是创建一个自定义转换器,如下所示:

@Converter
public class CharConverter implements AttributeConverter<String, String> {

@Override
public String convertToDatabaseColumn(String value) {
return value;
}

@Override
public String convertToEntityAttribute(String value) {
if (value == null) {
return null;
}

return value.trim();
}

}

并将其应用于每个 CHAR列:
@Column(name="DES_TXT", columnDefinition = "CHAR", length = 5)
@Convert(converter = CharConverter.class)
private String description;

关于java - 如何配置 Spring Boot JPA Java 实体以自动修剪每个 CHAR 列中的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61687994/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com