当前位置: 首页 > 知识库问答 >
问题:

Project Lombok-自定义生成的Setter

洪飞扬
2023-03-14

有没有办法为@Setter自定义生成的代码?

考虑以下简单类:

@Entity
@Getter
@Setter
@NoArgsConstructor
public class MyEntity implements Serializable {

      @Id private long id;

      @OneToMany
      private Set<AttributeColumn> columns = new HashSet<>();

      public void setColumns(Set<AttributeColumn> columns) {
          this.columns.clear();
          this.columns.addAll(columns);
      }
}

我希望Lombok为生成Setter,就像我在上面的示例中实现的那样。这应该只在用@Entity注释的类和作为Collection的属性上完成。其他属性的Setter,在本例中id应该像往常一样生成。

是否有办法根据这些标准定制Setter代码的生成?

共有1个答案

权浩阔
2023-03-14

不,没有这样的功能,也没有这样的计划。

正如在评论中所述,你可以自己做,但这一点都不容易。此外,您必须决定要么对逻辑进行硬编码(简单但可能对其他人不可用),要么解释如下内容

@SetterWhen(@Or(
    @Condition(annotatedWith=Entity.class), 
    @Condition(declaredType=Collection.class)))

这几乎不可能实现(因为Lombok运行时此信息不可用)。

目前,您所能做的就是允许在每个字段的基础上抑制生成。不可能生成不同的setter,但是有一个相关的功能:@单数,这可能对您有帮助,也可能对您没有帮助。

 类似资料:
  • 我有一个自定义文件,其中包含我所有图像的路径及其标签,我在一个数据框中加载使用: MyIndex有两列感兴趣的ImagePath和ClassName 接下来我做一些训练测试拆分和编码输出标签为: 我面临的问题是一次性加载的数据太大,无法放入当前的机器内存,因此我无法处理完整的数据集。 我曾尝试使用datagenerator,但不想遵循它遵循的目录约定,也无法消除增强部分。 问题是,是否有一种方法可

  • 我们有一个用例,在这个用例中,我们定义了许多不同的RPC。我们使用google的protobuf java生成了一个基于java的grpc存根代码 要转换为like 在java生成的代码中,每个原始服务应该有2个服务。我们只希望最终java生成的代码具有2个服务,解析器可能会/可能不会更新原始服务。原型文件。 当前protoc是否可以进行这种定制?我们可以扩展插件并编写我们的插件吗-

  • 我想训练自己的模型,以便在中使用。 搜索了很多,最终找到了一个训练模型的工作代码,但并不准确。文件还说,你需要15000个句子才能有一个准确的模型。 所以你需要有15000个句子,每个句子都有一个好的上下文和名字

  • 是否有方法重写build方法返回SampleClass以避免执行build.build?

  • 我试图创建一个自定义的原型,它定义了一个实质性的pom.xml并包含几个源文件。 在使用这个原型生成项目时,没有包含我在archetype.xml中定义的任何源(pom.xml按预期生成)。 batfile.bat位于src/main/resources/archetype-resources/src/main/resources中。 我还有一个原型-metadata.xml位于src/main/

  • 我正在使用 Scala,并希望构建自己的数据帧函数。例如,我想将一列视为数组,循环访问每个元素并进行计算。 首先,我尝试实现自己的getMax方法。因此列x的值为[3,8,2,5,9],该方法的预期输出为9。 下面是它在Scala中的样子 这是我目前所知道的,并得到这个错误 我不知道如何迭代该列。 } 一旦我能够实现自己的方法,我将创建一个列函数 然后我希望能够在SQL的陈述中使用它 给定输入列[