【发布时间】:2018-10-12 08:45:46
【问题描述】:
我有一个@Entity,其中包含三个字段 A、B、C,其中 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 为suggested in this answer,但如果我仍然需要使用@EmbeddedId(或任何@Embedded),唯一的方法(我知道)是编写绕过 id 变量的临时 getter 和 setter,例如
@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?
【问题讨论】: