gpt4 book ai didi

java - 如何公开和@EmbeddedId 的字段

转载 作者:行者123 更新时间:2023-11-29 04:19:43 28 4
gpt4 key购买 nike

我有一个包含三个字段 A、B、C 的 @Entity,其中 A 和 B 充当复合主键。我创建了一个包含 A 和 B 的 @EmbeddedId 类。为了减轻定义 getter 和 setter 的负担,我使用了 lombok @Data 注释。

@Entity
@Data
public class MyClass {
@EmbeddedId
private PrimaryKey id;
}

@Embeddable
@Data
public class PrimareyKey implements Serializable {
private String A;
private String B;
}

我不想公开 A 和 B 是主键并以相同的方式访问 A 和访问所有字段。

//Exposes primary key
myObject.getid().getA();
myObject.getid().getB();
myObject.getC();

//Hides primary key
myObject.getA();
myObject.getB();
myObject.getC();

目前可以使用@IdClass 将每个文件标记为@Id as suggested in this answer但是,如果我仍然需要使用 @EmbeddedId(或实际上任何 @Embedded),实现此目的的唯一方法(我知道)是编写临时的 getter 和 setter 绕过id变量如

@Entity
@Data
public class MyClass {
@EmbeddedId
private PrimaryKey id;

public String A getA(){
return id.getA()
}

public String A setA(String a){
id.setA(a);
}
//same for B and any other fiels in PrimaryKey

}

这看起来需要编写和维护大量样板代码。

是否有注释来公开 @EmbeddedId getter 和 setter?

最佳答案

在 MyClass 中,将 Lombok @Delegate 注释添加到您的主键。它应该看起来像:

@Entity
@Data
public class MyClass {
@Delegate
@EmbeddedId
private PrimaryKey id;
}

然后您可以直接从 MyClass 设置/获取 PrimaryKey 字段。 Here是供您阅读更多相关信息的链接。

关于java - 如何公开和@EmbeddedId 的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50131282/

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