一対の多一方向関連(annotation&xml)

4281 ワード

データベース:2つのテーブル、複数の外部キー
一.マルチクラスの作成


@Entity
public class User {
	private int id;
	private String name;
	@Id
	@GeneratedValue
	public int getId() {
		return id;
	}
	public String getName() {
		return name;
	}
	public void setId(int id) {
		this.id = id;
	}
	public void setName(String name) {
		this.name = name;
	}
	
}

二、一方のクラスを編纂する

@Entity
public class Group {
	private int id;
	private String name;
	private Set<User> users =new HashSet<User>();
	@Id
	@GeneratedValue
	public int getId() {
		return id;
	}
	@OneToMany
	@JoinColumn(name="groupID")
	public Set<User> getUsers() {
		return users;
	}
	public void setUsers(Set<User> users) {
		this.users = users;
	}
	public String getName() {
		return name;
	}
	public void setId(int id) {
		this.id = id;
	}
	public void setName(String name) {
		this.name = name;
	}
}

多角形のセットを追加し、@OneToManyの構成をマークします.@JoinColumnは多角形の外部キーを構成し、3枚目の中間テーブルを生成しません.
三、hibernateを配置する.cfg.xml

<mapping class="org.hibernate.tutorial.domain.Group"/>
		<mapping class="org.hibernate.tutorial.domain.User"/>

四、テスト結果

    create table Group (
        id integer not null auto_increment,
        name varchar(255),
        primary key (id)
    )

    create table User (
        id integer not null auto_increment,
        name varchar(255),
        groupID integer,
        primary key (id)
    )

    alter table User 
        add index FK_k6brud1jwhinw4g4f6yafcqjm (groupID), 
        add constraint FK_k6brud1jwhinw4g4f6yafcqjm 
        foreign key (groupID) 
        references Group (id)

xml方式
一、上記の二つのクラスを書く
二、マルチユーザを作成する.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"> 

<hibernate-mapping package="org.hibernate.tutorial.domain"> 

    <class name="User" table="User"> 
        <id name="id" column="User_ID"> 
            <generator class="native"/> 
        </id> 
        <property name="name"></property>
    </class> 

</hibernate-mapping> 

三、作成側Group.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"> 

<hibernate-mapping package="org.hibernate.tutorial.domain"> 

    <class name="Group" table="Group"> 
        <id name="id" column="group_Id"> 
            <generator class="native"/> 
        </id> 
        <property name="name"></property>
        <set name="users">
        	<key column="groupID"></key>
        	<one-to-many class="org.hibernate.tutorial.domain.User" />
        </set>
    </class> 

</hibernate-mapping> 

setセット構成を追加します.name='users'は、構成側の属性です.key構成は複数のカラム名にマッピングされ、四、hibernateを配置する.cfg.xml

<mapping resource="org/hibernate/tutorial/domain/Group.hbm.xml"/>
		<mapping resource="org/hibernate/tutorial/domain/User.hbm.xml"/>

五、テスト結果は以上の通り