Я определенно прочитал большинство сообщений об этом в google и stackoverflow, но у меня нет четкого представления об этом.
Сценарий:
public enum UserLicenseType {
DEMO_LICENSE1,DEMO_LICENSE2
}
@Entity(name = "UserLicense")
public class UserLicense implements Serializable{
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private UserLicenseType licenseType;
@LazyCollection(LazyCollectionOption.FALSE)
@OneToMany(cascade=CascadeType.ALL)
private List<Permission> permissions;
// getters and setters...
}
public enum PermissionType {
DEMO_PERMISSION1,DEMO_PERMISSION2
}
@Entity(name = "Permission")
public class Permission implements Serializable{
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private PermissionType permissionType;
}
@Entity(name = "UserProfile")
public class UserProfile implements Serializable{
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@LazyCollection(LazyCollectionOption.FALSE)
@CollectionOfElements
Map<UserLicense, ArrayList<Permission>> permissionForLicense;
}
База данныхсоздана таблица, соответствующая Map {UserLicense, ArrayList {Permission} }missionsForForicense имеет три поля
- UserProfile_Id: type = int
- элемент: type = tinyblob
- missionForLicense_Key: type = int
Концы сценариев
Прежде всего можно использовать Map {UserLicense, ArrayList {Permission}} вид структуры.
Если да, в чем я не прав?
Если нет, укажите лучший объектно-ориентированный способ.