Hibernate之xxx.hbm.xml中集合

//此前,先写一个测试类,对三种不同的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>




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值