首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Lombok -将@EmbeddedId字段暴露给@SuperBuilder

Lombok是一个Java库,它通过注解来简化Java代码的编写。它提供了许多注解,可以自动生成常见的Java代码,从而减少了开发人员的工作量。

@EmbeddedId是JPA(Java持久化API)中的一个注解,用于标识一个实体类中的复合主键字段。复合主键是由多个字段组成的主键。

@SuperBuilder是Lombok中的一个注解,用于生成一个带有父类属性的Builder模式的构造器。它可以自动为带有父类属性的子类生成构造器代码,从而简化了构造器的编写。

将@EmbeddedId字段暴露给@SuperBuilder意味着在使用@SuperBuilder注解生成的Builder模式构造器中,可以直接访问和设置被@EmbeddedId注解标识的复合主键字段。

这样做的优势是可以简化代码编写,减少手动编写构造器的工作量。通过使用@SuperBuilder注解,可以自动生成带有父类属性的构造器代码,包括@EmbeddedId字段,从而提高开发效率。

应用场景: 在使用JPA进行数据库操作时,如果需要使用复合主键,可以使用@EmbeddedId注解标识复合主键字段,并结合@SuperBuilder注解生成带有复合主键字段的Builder模式构造器。这样可以方便地进行对象的创建和持久化操作。

推荐的腾讯云相关产品和产品介绍链接地址: 腾讯云提供了多种云计算相关的产品和服务,以下是一些推荐的产品和对应的介绍链接地址:

  1. 云数据库 TencentDB:https://cloud.tencent.com/product/cdb
  2. 云服务器 CVM:https://cloud.tencent.com/product/cvm
  3. 云原生应用引擎 TKE:https://cloud.tencent.com/product/tke
  4. 人工智能平台 AI Lab:https://cloud.tencent.com/product/ai
  5. 物联网平台 IoT Hub:https://cloud.tencent.com/product/iothub
  6. 移动开发平台 MDP:https://cloud.tencent.com/product/mdp
  7. 云存储 COS:https://cloud.tencent.com/product/cos
  8. 区块链服务 BaaS:https://cloud.tencent.com/product/baas
  9. 元宇宙服务 Metaverse:https://cloud.tencent.com/product/metaverse

请注意,以上链接仅供参考,具体的产品选择应根据实际需求进行评估和决策。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • Java对象属性复制组件-Mapstruct的项目改造指南

    另外,由于编译期间就生成了代码,所以如果有任何问题,编译期间就可以提前暴露,这对于开发人员来讲就可以提前解决问题,而不用等到代码应用上线了,运行之后才发现错误。...如果项目中没有用到lombok,下面的lombok相关配置可以删除;如果用到lombok,由于MapStruct和Lombok都会在编译期间生成代码,为解决冲突使用如下配置即可。...组件,之后调用处只需要使用@Autowired,即可引入该类实例 * NullValuePropertyMappingStrategy.IGNORE:如果遇到旧对象属性为null,则跳过该属性赋值新对象...解决方法:在继承层次结构的所有类(即LoginEventDto和UserDto)都需要使用@SuperBuilder可以,(类UserDto的@Builder要去掉)但这个@SuperBuilder只在更高的...lombok版本才有,所以才升级了lombok版本。

    2.7K41

    @Builder不好用,试试@SuperBuilder

    image-20210103161952259 BaseDTO上加上Builder注解也不会有任何效果。事实上,Builder注解只管承接注解的这个类,而不会管他的父类或者子类。...试试SuperBuilder吧 这个问题在lombokv1.18.2 版本之前其实很难办,但是在这个版本官方引入了一个新的注解@SuperBuilder,无法build父类的问题迎刃而解 The @SuperBuilder...按照官方文档的说法,为了能够使用build方法,只需要在子类和父类上都加@SuperBuilder注解,我们试一下 ?...我们可以翻一下Lombok的源码,Lombok对所有的注解都有两套实现,javac和eclipse,由于我们的运行环境是Idea所以我们选择javac的实现,javac版本的实现在lombok.javac.handlers.HandleBuilder...翻一下@SuperBuilder的源码,核心逻辑在lombok.javac.handlers.HandleSuperBuilder#handle // 巴拉巴拉省略 JCClassDecl td = (

    2.1K20

    SpringBoot系列之对Excel报表的校验提示

    最近在做一个一对多excel类型的报表,如果excel报表数据填错了,要对其进行校验,然后返回前端,做一个表格显示错误信息,excel报表数据读取的可以参考我上篇博客,链接 Excel格式类似于,维度是以合并单元行为准...,如图,数据会读取到3条,然后有错误,就一行一行显示 错误信息类: package com.example.easyexcel.model.vo; import lombok.AllArgsConstructor...; import lombok.Data; import lombok.ToString; import lombok.experimental.SuperBuilder; import javax.validation.constraints.NotBlank...; import java.util.List; @Data @SuperBuilder(toBuilder = true) @AllArgsConstructor @NotBlank @ToString...package com.example.easyexcel.model.dto; import com.alibaba.excel.annotation.ExcelProperty; import lombok.Data

    38410

    大家都在使用 @Builder ,我为什么建议你谨慎使用 @Builder

    前言hello,大家好,我是你们的老朋友 Lorin,本周在开发中使用 @Builder (@Builder 是一个注解,通常与 Lombok 这种 Java 代码生成工具一起使用,可以帮助简化 Java...类的构建器模式(Builder Pattern)的使用和生成)的时候出现了一个默认值丢失事件,顺便借这个机会研究了一下 @Builder ,特此分享大家,先说结论:建议在日常开发中谨慎使用 @Builder...- 继承关系时,子类需要使用 @SuperBuilder- 设置默认值需要使用 @Builder.Default需要额外创建 Builder 对象。...补充一点:@Builder 我们可以用上面的的两种方式进行替代,在一些字段不可变的场景你甚至可以使用 @Getter @Setter 进行细化处理字段,毕竟 @Data 会暴露所有字段的访问和修改。...我也分享一些编程技巧和解决问题的方法,以帮助你更好地掌握Java编程。 我鼓励互动和建立社区,因此请留下你的问题、建议或主题请求,让我知道你感兴趣的内容。

    45920

    【小家Java】Lombok的使用详解(最详尽的解释,覆盖讲解所有可用注解),解决@Builder.Default默认值问题

    ,然后以该字段为元素产生一个构造函数。...= {"name"}, //排除某些字段 of = {"age"}, //只使用某些字段 callSuper = true //是否让父类字段也参与 默认false )...@Delegate 注释的属性,会把这个属性对象的公有非静态方法合到当前类 代理模式,把字段的方法代理类,默认代理所有方法。...和@Value也有这功能 @SuperBuilder 本以为它是支持到了父类属性的builder构建,但其实,我们还是等等吧 目前还不好使 @UtilityClass 工具类 会把所有字段方法static...@builder注解影响设置默认值的问题 例子如下,本来我是想age字段直接赋一个默认值的: 没有使用lombok,我们这么写: public static void main(String[]

    3.1K20

    祖传shi山代码重构实战(01)-Extract Class提炼类

    某个类添加一项新责任时,你会觉得不值得为这项责任分离出一个单独的类。于是,随着责任不断增加,这个类会变得过分复杂。很快,你的类变成一团乱麻。这样的类往往含有大量函数和数据,太大而不易理解。...一个有用的测试,问你自己,若你搬移了某些字段和函数,会发生啥事?其他字段和函数是否因此变得无意义? 另一个往往在开发后期出现的信号是类的子类化方式。...若旧类剩下的责任与旧类名称不符,为旧类改名 构造旧类时,创建一个新类的实例,建立“从旧类访问新类”的连接关系 对你想搬移的每个字段,运用【搬移字段】搬移之。每次更改后运行测试。...先复制一TelephoneNumber对象,然后复制得到的新对象传递给用户。...此外,如果同个TelephoneNumber对象被传递给多个用户,也可能在用户之间造成别名问题 电话号码”对象一般还具有复用价值,因此我考虑新提炼的类暴露更多的客户端。

    47330

    lombok注解笔记

    设置为true,直接访问字段,不调用getter exclude:此处列出的任何字段都不会在生成的equals和hashCode中使用。...foo=" + this.getFoo() + ")"; } } @var 作用 和val一样,官方文档中说区别就是var不加final修饰,但测试的效果是一样的 Experimental注解 在lombok.experimental...@Delegate 作用 代理模式,把字段的方法代理类,默认代理所有方法 参数 types:指定代理的方法 excludes:和types相反 例子 public class Example {...PREFIX_FOO_SUFFIX = "foo"; private String foo; public Example() { } } @Helper 作用 方法内部的类方法暴露方法使用...NonFinal 作用 设置不为Final,@FieldDefaults和@Value也有这功能 @PackagePrivate 作用 设置为private,@FieldDefaults和@Value也有这功能 @SuperBuilder

    1.4K20

    set 方法是坏味道?

    很多人在写代码时,写完字段就会利用 Lombok 生成 getter、setter。setter 同 getter 一样,反映的都是对细节的暴露。...book.approve(); ... } 通过在 Book 类里引入了一个 approve 函数,审核状态封装。...lombok.config 配置禁用@Setter: lombok.setter.flagUsage = error lombok.data.flagUsage = error 这里除了@Setter,...2 可变的数据 反对 setter,一个重要原因是它暴露了数据。 暴露数据造成的问题在于数据的修改,进而导致出现难以预料的 Bug。...4 总结 可变数据最直白的体现就是各种 setter: 破坏了封装 带来不可控的修改,代码增添许多问题 解决它的一种方式就是移除设值函数(Remove Setting Method),变化限制在一定的范围之内

    35640

    Lombok使用记录

    Lombok是一个Java包,可以通过注解的形式自动生成代码。通过使用lombok可以减少程序中许多样板代码,使程序更加清晰。由于项目中大量使用了lombok,在此对常用的一些lombok注解做记录。...代码如下:import lombok.Setter;import lombok.ToString;@ToString@Setterclass Parent { private int age;}@...@AllArgsConstructor生成所有字段的构造方法。三个注解都有staticName = "of"参数,可以生成private的构造函数,并使用静态方法of暴露出去。...命名为with + 字段名。即用变化的字段和原先字段生成一个新对象。...@Synchronized实例方法和静态方法加锁,synchronized关键字在实例或类本身上加锁,而@Synchronized注解会自动生成一个私有的实例或静态变量,然后在该变量上加锁,因此它的粒度更细

    75040

    TW洞见〡getter和setter的那些事

    数据需要被保护起来,而getter和setter是数据暴露出来。看起来这是一对矛盾。 前面提到,每一个独立的代码单元都可以看成是一个图灵机。...也就是说,为了合作的需要,代码单元需要将数据暴露出来。 那么直接数据字段设置为public,与通过getter和setter方式来暴露字段,有什么区别?...如果直接内部数据字段暴露出来,比如上面这段代码中的name,如果某天有一个新的需求,要求所有名字都用大写字母表示,就只能添加一个新的接口upperName,而使用name的地方,需要修改调用方式。...因为在C#和Python中,property的访问方式和直接数据字段暴露出来的访问方式完全一样,所以在写代码时可以考虑先将数据暴露出来,避免过多的getter和setter,减少冗余代码。...lombok提供了很多方便的注解来帮助Java程序员减少冗余代码。比如下面这段代码: ? 使用lombok,等价于下面这段代码: ? 看起来还不错。

    88560
    领券