Close

JPA - @OneToMany Examples

JPA JAVA EE 

@Entity
public class EntityA {
@Id
@GeneratedValue
private int myIdA;
@OneToMany
private List<EntityB> entityBList;
.............
}

@Entity
public class EntityB {
@Id
@GeneratedValue
private int myIdB;
private String str;
.............
}
Original Post




@Entity
public class EntityA {
@Id
@GeneratedValue
private int myIdA;
private String strA;
@OneToMany
@JoinColumn(name = "MY_FK_COL")
private List<EntityB> entityBList;
.............
}

@Entity
public class EntityB {
@Id
@GeneratedValue
private int myIdB;
private String strB;
.............
}
Original Post




Bidirectional one-to-many example:

@Entity
public class EntityA {
@Id
@GeneratedValue
private int myIdA;
private String strA;
@OneToMany(mappedBy = "refEntityA")
private List<EntityB> entityBList;
.............
}

@Entity
public class EntityB {
@Id
@GeneratedValue
private int myIdB;
private String strB;
@ManyToOne
private EntityA refEntityA;
.............
}
Original Post




@Entity
public class Employee {
@Id
@GeneratedValue
private long id;
private String name;
@OneToMany
private Map<Date, Task> tasks;
.............
}

@Entity
public class Task {
@Id
@GeneratedValue
private long id;
private String name;
private String description;
.............
}
Original Post

@Entity
public 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;
.............
}

@Entity
public class Task {
@Id
@GeneratedValue
private long id;
private String name;
private String description;
.............
}
Original Post




Foreign key mapping strategy:

@Entity
public 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;
.............
}

@Entity
public class Task {
@Id
@GeneratedValue
private long id;
private String name;
private String description;
.............
}
Original Post




Bidirectional @OneToMany on Map values:

@Entity
public 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;
.............
}

@Entity
public class Task {
@Id
@GeneratedValue
private long id;
private String name;
private String description;
@ManyToOne
@JoinColumn(name = "EMP_FK")
private Employee taskEmployee;
.............
}
Original Post

@Entity
public class Employee {
@Id
@GeneratedValue
private long id;
private String name;
@ElementCollection
@OneToMany
private Map<AssignInfo, Task> taskMap;
.............
}

@Entity
public class AssignInfo {
@Id
@GeneratedValue
private long id;
private Date startDate;
private Date endDate;
.............
}

@Entity
public class Task {
@Id
@GeneratedValue
private long id;
private String name;
private String description;
.............
}
Original Post




See Also