1 Kasım 2023 Çarşamba

JPA @OneToOne Unidirectional İlişki

Giriş
@JoinColumn anotasyonuna sahip nesne child nesne olarak düşünülebilir

Örnek
Şöyle yaparız. Address tablosundaki id sütünü primary key, Employee tablosundaki addrs_id sütünü da Address tablosuna foreign key olarak tanımlanır.
@Entity
@Data
public class Address {
  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  private Integer id;
  ...
}

@Entity
@Data
public class Employee {
  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  private Integer id;
  ...
  @OneToOne(cascade = CascadeType.ALL)
  @JoinColumn(name = "addrs_id", referencedColumnName = "id")
  private Address address;    
}
Örnek
Şöyle tanımlarız.
@Entity
@Table(name = Membership_Profile)
class MembershipProfile {
   Long moduleMembershipId;
   String displayName;
   // Other properties if needed
}
ve
@Entity
class PokerProfile {
   @OneToOne(fetch=FetchType.LAZY)
   @JoinColumn(name = "membershipId")
   MembershipProfile membershipProfile;
   ...
}
PokerProfile nesnesi JoinColumn ile hangi membership profile nesnesini ile ilişkili olduğunu bilir.

Örnek
ForeignKeyvermek için şöyle yaparız.
@Entity
public class MediaAnalysis {

  @OneToOne
  @JoinColumn(
    name = "MED_ID",
    nullable = false,
    foreignKey = @ForeignKey(name="MEA_MED_FK")
  )
  private Media media;
  ...

}

Hiç yorum yok:

Yorum Gönder