您的位置:首页 > 其它

Hibernate映射组件属性为集合(二)

2016-03-07 21:11 393 查看
如果组件类又包含了List、Set、Map等集合属性,则可直接在组件类中使用@ElementCollection修饰集合属性,并使用@CollectionTable指定保存集合属性的数据表——与普通实体类中映射集合属性的方式基本相同。假设上面的例子的Name中增加了一个power属性,而这个power属性为Map类型的。

@Embeddable
public class Name
{
// 定义first成员变量
@Column(name="person_firstname")
private String first;
// 定义last成员变量
@Column(name="person_lastname")
private String last;
// 引用拥有该Name的Person对象
@Parent
private Person owner;
// 集合属性,保留该对象关联的考试成绩
@ElementCollection(targetClass=Integer.class)
@CollectionTable(name="power_inf",
joinColumns=@JoinColumn(name="person_name_id" , nullable=false))
@MapKeyColumn(name="name_aspect")
@Column(name="name_power" , nullable=false)
@MapKeyClass(String.class)
private Map<String , Integer> power
= new HashMap<>();

// 无参数的构造器
public Name()
{
}
// 初始化全部成员变量的构造器
public Name(String first , String last)
{
this.first = first;
this.last = last;
}

// first的setter和getter方法
public void setFirst(String first)
{
this.first = first;
}
public String getFirst()
{
return this.first;
}

// last的setter和getter方法
public void setLast(String last)
{
this.last = last;
}
public String getLast()
{
return this.last;
}

// owner的setter和getter方法
public void setOwner(Person owner)
{
this.owner = owner;
}
public Person getOwner()
{
return this.owner;
}

// power的setter和getter方法
public void setPower(Map<String ,Integer> power)
{
this.power = power;
}
public Map<String ,Integer> getPower()
{
return this.power;
}
}


执行结果如下:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: