我肯定会在googleand 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}} permissionForLicense 有三个字段
情景结束
首先是可以使用 映射{UserLicense,ArrayList {Permission}} 一种结构。
如果是,我错在哪里?
如果没有,请提供最佳的面向对象方式。