program tip

누군가가 최대 절전 모드에서 @MapsId를 설명해 주시겠습니까?

radiobox 2020. 12. 13. 09:11
반응형

누군가가 최대 절전 모드에서 @MapsId를 설명해 주시겠습니까?


누군가 @MapsId가 최대 절전 모드 에서 나에게 설명해 주 시겠습니까? 나는 그것을 이해하는 데 어려움을 겪고 있습니다.

예를 들어 설명 할 수 있고 어떤 종류의 사용 사례에 가장 적합할까요?


다음은 Object DB 의 멋진 설명입니다 .

EmbeddedId 기본 키, EmbeddedId 기본 키 내의 속성 또는 상위 엔터티의 단순 기본 키에 대한 매핑을 제공하는 ManyToOne 또는 OneToOne 관계 속성을 지정합니다. value 요소는 관계 속성이 해당하는 복합 키 내의 속성을 지정합니다. 엔티티의 기본 키가 관계에서 참조하는 엔티티의 기본 키와 동일한 Java 유형 인 경우 값 속성이 지정되지 않습니다.

// parent entity has simple primary key

@Entity
public class Employee {
   @Id long empId;
   String name;
   ...
} 

// dependent entity uses EmbeddedId for composite key

@Embeddable
public class DependentId {
   String name;
   long empid;   // corresponds to primary key type of Employee
}

@Entity
public class Dependent {
   @EmbeddedId DependentId id;
    ...
   @MapsId("empid")  //  maps the empid attribute of embedded id
   @ManyToOne Employee emp;
}

여기 에서 API 문서를 읽어 보세요.


이 메모도 유용하다는 것을 알았 @MapsId습니다. 최대 절전 모드에서 주석은 다른 테이블의 열과 열을 매핑합니다.

두 테이블간에 동일한 기본 키를 공유하는데도 사용할 수 있습니다.

예:

@Entity
@Table(name = "TRANSACTION_CANCEL")
public class CancelledTransaction {
    @Id
    private Long id; // the value in this pk will be the same as the
                     // transaction line from transaction table to which 
                     // this cancelled transaction is related

    @OneToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "ID_TRANSACTION", nullable = false)
    @MapsId
    private Transaction transaction;
    ....
}

@Entity
@Table(name = "TRANSACTION")
@SequenceGenerator(name = "SQ_TRAN_ID", sequenceName = "SQ_TRAN_ID")
public class Transaction  {
    @Id
    @GeneratedValue(generator = "SQ_TRAN_ID", strategy = GenerationType.SEQUENCE)
    @Column(name = "ID_TRANSACTION", nullable = false)
    private Long id;
    ...
}

참고 URL : https://stackoverflow.com/questions/9923643/can-someone-please-explain-me-mapsid-in-hibernate

반응형