Product.java
package com.model;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class Product {
private int id;
private String name;
private Set<String> colors = new HashSet<String>();
private List<ColorPrice> colorPrices = new ArrayList<ColorPrice>();
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Set<String> getColors() {
return colors;
}
public void setColors(Set<String> colors) {
this.colors = colors;
}
public List<ColorPrice> getColorPrices() {
return colorPrices;
}
public void setColorPrices(List<ColorPrice> colorPrices) {
this.colorPrices = colorPrices;
}
}
ColorPrice.java
package com.model;
public class ColorPrice {
private String color;
private double price;
public ColorPrice(){
}
public ColorPrice(String color,double price){
this.color = color;
this.price = price;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
}
Product.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<!-- ORM映射文件 -->
<hibernate-mapping package="com.model">
<class name="Product" table="product">
<id name="id" column="id">
<generator class="native" />
</id>
<property name="name"></property>
<set name="colors" table="p_color">
<key column="pId"></key>
<element type="string" column="color"></element>
</set>
<bag name="colorPrices" table="p_c_p">
<key column="pId"></key>
<composite-element class="ColorPrice">
<property name="color"></property>
<property name="price"></property>
</composite-element>
</bag>
</class>
</hibernate-mapping>
单元测试:
@Test
public void t(){
Session session = HibernateUtil.getInstance().getSession();
session.beginTransaction();
Set<String> set = new HashSet<String>();
set.add("red");
set.add("blue");
Product p = new Product();
p.setName("p");
p.setColors(set);
List<ColorPrice> l = new ArrayList<ColorPrice>();
l.add(new ColorPrice("d",3));
p.setColorPrices(l);
session.save(p);
/*Product p = (Product) session.load(Product.class, 1);
p.getColors().remove("red");*/
session.getTransaction().commit();
session.close();
}