//此前,先写一个测试类,对三种不同的Set进行排序;
public static void main(String[] args) {
Set<String> set = new HashSet<String>(); //[dd, aa, bb, cc] 不排序
set = new TreeSet<String>(); //[aa, bb, cc, dd] 正常排序
set = new LinkedHashSet<String>(); //[bb, aa, cc, dd] 插入时顺序
set.add("bb");
set.add("aa");
set.add("cc");
set.add("dd");
System.out.println(set);
}
二、写个案例;
public class User {
private Integer id;
private String name;
private Set<String> addressSet;
private List<String> addressList;
private Map<String, String> addressMap;
private String[] addressArray;
private Collection<String> addressBag = new ArrayList<String>(); // 使用Bag时,可以声明为Collection或是List
get/set方法省略
}
@Test
public void saveUser() {
Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();
User user = new User();
user.setName("zhangsan");
Set<String> set = new HashSet<String>();
set.add("1.this is a note!");
set.add("2.this is 2 note!");
user.setSet(set);
List<String> list = new ArrayList<String>();
list.add("1 list1");
list.add("2 list2");
user.setAddressList(list);
Map<String, String> map = new HashMap<String, String>();
map.put("1", "map1");
map.put("2", "map2");
user.setAddressMap(map);
// 数组
user.setAddressArray(new String[] { "xxxx", "yyyy" });
// Bag(没有顺序,可以重复)
user.getAddressBag().add("xxxx");
user.getAddressBag().add("yyyy");
user.getAddressBag().add("zzzz");
session.save(user);
System.out.println("ID=" + user.getId());
tx.commit();
session.close();
}
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="pde.ams.collection.User" table="user">
<id name="id" type="int" column="id">
<generator class="native" />
</id>
<property name="name" type="string"></property>
<!-- addressSet属性, Set集合 sort="natural"内部程序排序 order-by="字段 ASC|DESC":语句排序-->
<set name="addressSet" table="user_addressSet">
<key column="userId" />
<element column="address" type="string"></element>
</set>
<!-- addressList属性,List集合 -->
<list name="addressList" table="user_addressList">
<key column="userId"></key>
<list-index column="idx"></list-index>
<element column="address" type="string"></element>
</list>
<!-- addressMap属性,Map集合 -->
<map name="addressMap" table="user_addressMap">
<key column="userId"></key>
<map-key column="key_" type="string"></map-key>
<element column="address" type="string"></element>
</map>
<!-- addressArray属性,数组类型 -->
<array name="addressArray" table="user_addressArray">
<key column="userId" />
<list-index column="idx"></list-index>
<element column="address" type="string"></element>
</array>
<!-- addressBag属性,Bag类型(Hibernate中的类型) -->
<bag name="addressBag" table="user_addressBag">
<key column="userId"></key>
<element column="address" type="string"></element>
</bag>
</class>
</hibernate-mapping>