If you wish to manipulate individual Group Members belonging to a Group , then you should have a separate table for GroupMembers.
You have to create a separate class for GroupMembers
The Group class:
@Entity
@Table(name = "groups")
public class Group implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
@Column
private String groupName;
public String getGroupName() {
return groupName;
}
public void setGroupName(String groupName) {
this.groupName = groupName;
}
@OneToMany(cascade = CascadeType.ALL, mappedBy = "post", orphanRemoval = true)
private List<GroupMember> groupMembers = new ArrayList<>();
//getters and setters
public void addGroupMember(GroupMember groupMember) {
groupMembers.add(groupMember);
groupMember.setGroup(this);
}
public void removeGroupMember(GroupMember groupMember) {
groupMember.setGroup(null);
this.groupMembers.remove(groupMember);
}
}
The GroupMember class
@Entity
public class GroupMember {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Column
private String name;
@ManyToOne
private Group group;
//getters and setters
Use this in your controller
@GetMapping(value = "/addGroupMembers")
public void testGroup() {
Group group = new Group();
group.setGroupName("group_name1");
GroupMember gm = new GroupMember();
gm.setName("peter");
GroupMember gm2 = new GroupMember();
gm2.setName("john");
group.addGroupMember(gm);
group.addGroupMember(gm2);
service.saveGroup(group);
}
This will create a foreign key referencing to Group in the GroupMember table.
I know your question was to use @JoinTable, but a separate table usually isn't needed. See One-To-Many Relationship with Join Table
Also, if you are new to Spring Data JPA and table creations, please read https://vladmihalcea.com/a-beginners-guide-to-jpa-and-hibernate-cascade-types/