JPA how to make composite Foreign Key part of composite Primary Key

前端 未结 2 418
旧巷少年郎
旧巷少年郎 2020-12-01 05:25

I have following tables how can i map them to JPA entities:

TABLE Event {
    EventID
    SourceID
    ....Other event fields
    PK (EventID, SourceID)
}

TA         


        
2条回答
  •  清歌不尽
    2020-12-01 05:54

    @Entity
    public class Event {
    
        @EmbeddedId
        private EventId id;
    
        @OneToMany(mappedBy = "event")
        private List meetings = new ArrayList<>();
    }
    
    @Embeddable
    public class EventId implements Serializable {
    
        @Column(name = "EventID")
        private Long eventId;
    
        @Column(name = "SourceID")
        private Long sourceId;
    
        //implements equals and hashCode
    }
    
    @Entity
    public class Meeting {
    
        @EmbeddedId
        private MeetingId id; 
    
        @MapsId("eventId")
        @JoinColumns({
            @JoinColumn(name="EventID", referencedColumnName="EventID"),
            @JoinColumn(name="SourceID", referencedColumnName="SourceID")
        })
        @ManyToOne
        private Event event;
    }
    
    @Embeddable
    public class MeetingId implements Serializable {
    
        @Column(name = "MeetingID")
        private Long meetingId;
    
        private EventId eventId;
    
        //implements equals and hashCode
    }
    

    You may want to take a look at a similar question for more details.

提交回复
热议问题