I have a simple project running under Spring-Data-Rest to expose some objects via the Rest API, like this one (simplified, minus Setters / Getters):
@Entity
public class Group {
@Id
@GeneratedValue
private int id;
...
}
@Entity
public class Person{
@Id
@GeneratedValue
private int id;
...
}
Now, obviously, each group can have people as members that can be easily resolved through @ManyToMany. Unfortunately (or usually?) Membership in a group contains more information than just "is a member." For example, it should also include “admin of” or “hidden member” information.
This naturally leads to an additional entity ...
@Entity
public class GroupMember {
@OneToOne(optional = false)
@JoinColumn(updatable = false)
private Person member;
@OneToOne(optional = false)
@JoinColumn(updatable = false)
private Group group;
private boolean admin;
private boolean hidden;
...
}
, , , ... POST ing a text/uri-list to () /groups/1/members, GroupMember, /groupMembers/, , imho, REST .
POST () GroupMember ? , @RepositoryRestController , POST /groups/1/members, text/uri-list ( , , ). , , , , .
Hibernate @ManyToMany ... ...