Hibernate一対多一方向


一対多の片方向練習
グループ側が一方になる
user側は複数の側として
Groupのクラスの説明:
package com.anryn;

import java.util.HashSet;
import java.util.Set;

public class Group {

	private int id ;
	private String address ;
	private Set<User> users = new HashSet<User>() ;

	public Group() {
	}
	
	public Set<User> getUsers() {
		return users;
	}

	public void setUsers(Set<User> users) {
		this.users = users;
	}
	
	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getAddress() {
		return address;
	}

	public void setAddress(String address) {
		this.address = address;
	}
}

グループに対してはhbm.xmlのファイルは以下のように記述されています.

<?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 package="com.anryn">
 <class name="Group" table="t_Group">
 	<id name="id">
 		<generator class="native"/>
 	</id>
 	<property name="address"/>
 	 <set name="users">
 	     <key column="groupId"></key>
 	     <one-to-many class="com.anryn.User"/>
 	 </set>
 </class>

</hibernate-mapping>

userクラスにはいくつかの一般的な属性しかありません
テストコードから,最終的に2つのテーブルが生成され,1つの外部キーが生成され,groupIdがuserの1つの外部キーとしてgroupに関連付けられることが分かった.
package com.anryn;

import java.util.Date;

import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.tool.hbm2ddl.SchemaExport;
import org.junit.Test;

public class HibernateXMLTest {

	@Test
	public void testSchemaExport() {
		new SchemaExport(new AnnotationConfiguration().configure()).create(false, true) ;
	}
}