principal_id permission target
12312313 PERM1 1000
12312313 PERM2 1000
12312313 PERM2 1002
@Entity
...
public class Principal {
@Id
private long principalId;
...
private Map<String, List<Long>> permissionMap;
}
@Entity
...
public class Principal {
@Id
private long principalId;
/** Other properties **/
@OneToMany
private Set<Permission> permissions;
....
}
@Entity
@IdClass(PermissionId.class)
public class Permission {
@Id
private String permission;
@Id
private Long target
public static class PermissionId implements Serializable {
private String permission;
private Long target;
/** setters/getters hashcode and equals goes here **/
}
}
@Embeddable
public class Permission {
private String permission;
private int target;
}
@ElementCollection
@CollectionTable(name="foo", joinColumns = @JoinColumn(name = "principal_id"))
private Set<Permission> permissions;
@ElementCollection
@CollectionTable(name="foo", joinColumns = @JoinColumn(name = "principal_id"))
@MapKeyColumn(name="permission")
@Column(name="target")
private Map<String, Integer> permissions;