使用带有Hibernate的java.util.HashMap,将key作为某个类,将值作为对象的ArrayList使用

时间:2011-07-11 06:28:01

标签: hibernate annotations mapping hashmap

我肯定会在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 有三个字段

  1. UserProfile_Id:type = int
  2. 元素:type = tinyblob
  3. permissionForLicense_Key:type = int
  4. 情景结束

    首先是可以使用     映射{UserLicense,ArrayList {Permission}}  一种结构。

    如果是,我错在哪里?

    如果没有,请提供最佳的面向对象方式。

0 个答案:

没有答案