如何在java反射中隐藏子模型类属性名称

如何在java反射中隐藏子模型类属性名称,java,reflection,Java,Reflection,我有一个非常大的模型类,我想为这个模型创建一个toString方法。但是这个模型中有很多字段,所以我尝试使用一个公共模型和Java反射。但是输出是include子模型字段名,是否可以删除该字段 我有1个抽象模型类,如下所示: import java.lang.reflect.*; public abstract class CommonEntity { public String getInsertString() { StringBuilder sb = new StringB

我有一个非常大的模型类,我想为这个模型创建一个toString方法。但是这个模型中有很多字段,所以我尝试使用一个公共模型和Java反射。但是输出是include子模型字段名,是否可以删除该字段

我有1个抽象模型类,如下所示:

import java.lang.reflect.*;

public abstract class CommonEntity {

  public String getInsertString() {
    StringBuilder sb = new StringBuilder();
    try {
      Field[] fields = this.getClass().getDeclaredFields();

      for (Field field : fields) {

        field.setAccessible(true);        

        Object value = field.get(this);
        if (value != null) {          
          sb.append("\"" + value.toString() + "\",");
        }

      }

    } catch (Exception e) {
      System.out.println(e);
    }
    return sb.toString();
  }

}
另外两个模型扩展了这个公共模型

测试:

测试2:

@Data
public class test2 extends CommonEntity {
  private String name2;
  private String last2;
}
和主要类别:

public static void main(String[] args) {
    test a = new test();
    a.setName("1");
    a.setLast("2");

    test2 b = new test2();
    b.setLast2("3");
    b.setName2("4");
    a.setTest(b);

    System.out.println(a.getInsertString());

}
控制台输出:

"1","2","test2(name2=4, last2=3)",
我的期望:

"1","2","4","3,
可以移除吗

test2(name2


在输出中。

该部分输出来自由自动生成的
toString
。如果您不希望它出现,请实现您自己的
toString
函数


然而,我担心这个实现,结果字符串表示的预期用途是什么?从您的措辞来看,我担心您打算将其用作SQL查询的一部分,这是不明智的。

是的,我打算用于SQL查询。我将这个数据模型从一个非常巨大的Json字符串转换而来。对于这种情况,请给我一些建议。我不认为依靠toString创建SQL查询是最好的设计。可能定义一种特定的转换方法?或者更好地使用ORM库,比如Json格式的Or.My raw data。复杂的结构和很多属性,我想插入到平面结构数据库中。我考虑过Hibernate,但如果我使用Hibernate,我必须将结构模型转换为平面模型,这需要花费大量精力和很长的源代码。有没有可能或任何工具来实现这一点?
test2(name2
last2