9 Eylül 2018 Pazar

JPA @MapsId Anotasyonu

Giriş
Shared primary key için kullanılır. Genellikle ManyToOne ilişkilerde kullanılır.

ManyToOne
Örnek
Elimizde şöyle bir kod olsun.
@Entity
@Table(name = "users")
public class User implements Serializable {
  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  @Column(name = "user_id")
  private Integer userId;
  ...
}
Elimizde şöyle bir kod olsun.
@Entity
@Table(name = "anime")
public class Anime {
  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  @Column(name = "user_id")
  private Integer animeId;
  ...
}
Şöyle yaparız.
@Entity
@Table(name = "user_ratings")
public class UserRating {

  @Embeddable
  public static class UserRatingId implements Serializable {
    protected Integer userId; // type matches User's primary key
    protected Integer animeId; // type matches Anime's primary key
    //...
  }

  @EmbeddedId
  private UserRatingId id;

  @MapsId("userId") // maps userId attribute of embedded id
  @ManyToOne
  @JoinColumn(name = "user_id")
  private User user;

  @MapsId("animeId") // maps animeId attribute of embedded id
  @ManyToOne
  @JoinColumn(name = "anime_id")
  private Anime anime;

  //...
}
Örnek
Şöyle yaparız.
@ManyToOne
@MapsId("idClient")
@JoinColumn(name = "id_client", referencedColumnName = "customerid")
private Client client;

Hiç yorum yok:

Yorum Gönder