JPA中的映射集合
?????
*/
????
@ElementCollection
????
@JoinTable(name="item_image", joinColumns= {@JoinColumn(nullable = false, name ="item_id")})
????
@CollectionId(columns={@Column(name="item_auto_id")}, type=@Type(type="long"), generator="nat")
????
private Collection<Image> list = new ArrayList<Image>();
?
?????
public long getId() {
????????
return id;
????
}
?
?????
public void setId(long id) {
????????
this.id = id;
????
}
?
?????
public String getName() {
????????
return name;
????
}
?
?????
public void setName(String name) {
????????
this.name = name;
????
}
?
?????
public Set<String> getImages() {
????????
return images;
????
}
?
?????
public void setImages(Set<String> images) {
????????
this.images = images;
????
}
?
?????
public List<String> getListImages() {
????????
return listImages;
????
}
?
?????
public void setListImages(List<String> listImages) {
????????
this.listImages = listImages;
????
}
?
?????
public Map<String, String> getMapImages() {
????????
return mapImages;
????
}
?
?????
public void setMapImages(Map<String, String> mapImages) {
????????
this.mapImages = mapImages;
????
}
?
?????
public Collection<Image> getList() {
????????
return list;
????
}
?
?????
public void setList(Collection<Image> list) {
????????
this.list = list;
????
}
}
?
??
??
?Image.java
?
?import javax.persistence.Column;
import javax.persistence.Embeddable;
?
?@Embeddable
public class Image {
????
private String filename;
?????
?????
@Column(name="size_x")
????
private int sizeX;
?????
?????
@Column(name="size_y")
????
private int sizeY;
?
?????
public boolean equals(Object obj) {
????????
if (!(obj instanceof Image))
????????????
return false;
????????
Image image = (Image) obj;
????????
if ((image.getFilename().equals(this.getFilename()))
????????????????
&& (image.sizeX == this.getSizeX())
????????????????
&& image.getSizeY() == this.getSizeY()
????????????????
)
????????????
return true;
????????
else return false;
????
}
?
?????
public int hashCode() {
????????
// TODO Auto-generated method stub
????????
return 0;
????
}
?
?????
public String getFilename() {
????????
return filename;
????
}
?
?????
public void setFilename(String filename) {
????????
this.filename = filename;
????
}
?
?????
public int getSizeX() {
????????
return sizeX;
????
}
?
?????
public void setSizeX(int sizeX) {
????????
this.sizeX = sizeX;
????
}
?
?????
public int getSizeY() {
????????
return sizeY;
????
}
?
?????
public void setSizeY(int sizeY) {
????????
this.sizeY = sizeY;
????
}
}
?
??
?Test:
?
?public class CollectionTest {
????
public static void main(String[] args) {
????????
CollectionModel model = new CollectionModel();
????????
model.setName("李四");
????????
/*插入数据
//????? Set<String> set = new HashSet<String>();
//????? set.add("lisi -1");
//????? set.add("lisi -1");
//????? model.setImages(set);
//????? List<String> list = new ArrayList<String>();
//????? list.add("张三");
//????? list.add("李四");
//????? list.add("王五");
//????? model.setListImages(list);
????????
*/
????????
/**
?????????
* 针对map的测试类
?????????
*/
????????
/*Map<String, String> map = new HashMap<String,String>();
????????
map.put("key1", "value1");
????????
map.put("key2", "value2");
????????
map.put("key3", "value3");
????????
model.setMapImages(map);
?????????
*/
????????
List<Image> list =
new
ArrayList<Image>();
????????
Image image =
new
Image();
????????
image.setFilename(
"file1"
);
????????
image.setSizeX(
20
);
????????
image.setSizeY(
30
);
????????
list.add(image);
?????????
?????????
image =
new
Image();
????????
image.setFilename(
"file2"
);
????????
image.setSizeX(
40
);
????????
image.setSizeY(
50
);
????????
list.add(image);
????????
model.setList(list);
????????
JPASessionFactory.persistenceObject(model);
????
}
?
?}
?描述:Ⅰ.Hibernate annotations 对包含值类型的集合映射支持非标准的注解. 对于值类型的对象不具备数据库的同一性,它属于一个实体的实例,值类型的类没有标识符或者标识属性,值类型的实例的生命周期由所依附的实体实例的生命周期所决定,且值类型的对象不支持共享引用。