У меня есть @Entity
с тремя полями A, B, C, из которых A и B действуют как составной первичный ключ. Я создал класс @EmbeddedId
, содержащий A и B. Чтобы облегчить бремя определения геттеров и сеттеров, я использовал аннотацию 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
как , предложенный в этом ответе , но если мне все еще нужно использовать @EmbeddedId
(или любой @Embedded
на самом деле) единственным способом ( Я знаю), чтобы достигнуть этого, нужно написать специальные методы получения и установки, обходя переменную 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
геттеров и сеттеров?