JPA JAVA EE
@Entitypublic class EntityA { @Id @GeneratedValue private int myIdA; @OneToMany private List<EntityB> entityBList; .............}
@Entitypublic class EntityB { @Id @GeneratedValue private int myIdB; private String str; .............}
@Entitypublic class EntityA { @Id @GeneratedValue private int myIdA; private String strA; @OneToMany @JoinColumn(name = "MY_FK_COL") private List<EntityB> entityBList; .............}
@Entitypublic class EntityB { @Id @GeneratedValue private int myIdB; private String strB; .............}
Bidirectional one-to-many example:
@Entitypublic class EntityA { @Id @GeneratedValue private int myIdA; private String strA; @OneToMany(mappedBy = "refEntityA") private List<EntityB> entityBList; .............}
@Entitypublic class EntityB { @Id @GeneratedValue private int myIdB; private String strB; @ManyToOne private EntityA refEntityA; .............}
@Entitypublic class Employee { @Id @GeneratedValue private long id; private String name; @OneToMany private Map<Date, Task> tasks; .............}
@Entitypublic class Task { @Id @GeneratedValue private long id; private String name; private String description; .............}
@Entitypublic class Employee { @Id @GeneratedValue private long id; private String name; @OneToMany @JoinTable(name = "ASSIGNED_TASKS", joinColumns = {@JoinColumn(name = "EMPLOYEE_FK")}, inverseJoinColumns = {@JoinColumn(name = "TASK_FK")}) @MapKeyColumn(name = "TASK_DATE") private Map<Date, Task> tasks; .............}
Foreign key mapping strategy:
@Entitypublic class Employee { @Id @GeneratedValue private long id; private String name; @OneToMany @JoinColumn(name = "EMPLOYEE_FK") @MapKeyColumn(name = "TASK_DATE", nullable = true) private Map<Date, Task> tasks; .............}
Bidirectional @OneToMany on Map values:
@Entitypublic class Employee { @Id @GeneratedValue private long id; private String name; @OneToMany(mappedBy = "taskEmployee", cascade = CascadeType.ALL) @MapKeyColumn(name = "TASK_DATE", nullable = true) private Map<Date, Task> tasks; .............}
@Entitypublic class Task { @Id @GeneratedValue private long id; private String name; private String description; @ManyToOne @JoinColumn(name = "EMP_FK") private Employee taskEmployee; .............}
@Entitypublic class Employee { @Id @GeneratedValue private long id; private String name; @ElementCollection @OneToMany private Map<AssignInfo, Task> taskMap; .............}
@Entitypublic class AssignInfo { @Id @GeneratedValue private long id; private Date startDate; private Date endDate; .............}