原文地址:http://shyf12054213.iteye.com/blog/1629891
假定Customer类有一个集合属性images,用来存放所有照片的文件名。
private Set<String> images=new TreeSet<String>();
映射set集合
@Entity
@Table(name="customers")
public class Customer implements Serializable {
private Long id;
private String name;
private int age;
private Set<String> images=new TreeSet<String>();
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
public Long getId() {
return this.id;
}
public void setId(Long id) {
this.id = id;
}
@CollectionOfElements()
@JoinTable(name="IMAGES",joinColumns={@JoinColumn(name="CUSTOMER_ID")})
@Column(name="filename",nullable=false)
public Set<String> getImages() {
return images;
}
public void setImages(Set<String> images) {
this.images = images;
}
}
映射bag包
bag集合中的对象可以重复,但不按特定方式排序。hibernate允许你用list来模拟bag行为。
@CollectionOfElements
@CollectionId(columns = @Column(name="imageid",nullable=false), type=@Type(type="long"), generator = "sys-increment")
@GenericGenerator(name="sys-increment",strategy="increment")
@JoinTable(name="IMAGES",joinColumns={@JoinColumn(name="CUSTOMER_ID")})
@Column(name="FILENAME")
public List<String> getImages() {
return images;
}
public void setImages(List<String> images) {
this.images = images;
}
映射LIST列表
集合中的对象可以重复,并且按索引位置排序
@CollectionOfElements
@JoinTable(name="images",joinColumns={@JoinColumn(name="customerid")})
@IndexColumn(name = "imageid")
@Column(name="filename",nullable=false)
public List<String> getImages() {
return this.images;
}
public void setImages(List<String> images) {
this.images = images;
}
映射map
@CollectionOfElements
@org.hibernate.annotations.MapKey(columns={@Column(name="image_name",nullable=false)})
@JoinTable(name="images",joinColumns={@JoinColumn(name="customerid")})
@Column(name="filename",nullable=false)
@Sort(type=SortType.NATURAL)
public Map<String,String> getImages() {
return this.images;
}
public void setImages(Map<String,String> images) {
this.images = images;
}
映射组件类型集合
映射方式和以上大致相同。以map举例。
@Embeddable
public class Image implements Serializable {
//private String name;
private String filename;
private int sizeX;
private int sizeY;
private Customer customer;
}
@CollectionOfElements
@MapKey(columns={@Column(name = "name",nullable=false)})
@JoinTable(name="IMAGES",joinColumns={@JoinColumn(name="CUSTOMER_ID",nullable=false)})
public Map<String,Image> getImages() {
return this.images;
}